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
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.
-rw-r--r--CMakeLists.txt2
-rw-r--r--config/darwin-config.py6
-rw-r--r--config/irix6-config.py4
-rw-r--r--config/linux2-config.py3
-rw-r--r--config/linuxcross-config.py3
-rw-r--r--config/win32-mingw-config.py3
-rw-r--r--config/win32-vc-config.py3
-rw-r--r--extern/SConscript3
-rw-r--r--extern/verse/CMakeLists.txt28
-rw-r--r--extern/verse/Makefile55
-rw-r--r--extern/verse/dist/BUGS8
-rw-r--r--extern/verse/dist/CMakeLists.txt90
-rw-r--r--extern/verse/dist/MAINTAINERS15
-rw-r--r--extern/verse/dist/Makefile15
-rw-r--r--extern/verse/dist/Makefile.win32102
-rw-r--r--extern/verse/dist/README.html173
-rw-r--r--extern/verse/dist/SConstruct146
-rw-r--r--extern/verse/dist/examples/list-nodes.c39
-rw-r--r--extern/verse/dist/mkprot_cmd/CMakeLists.txt52
-rw-r--r--extern/verse/dist/resources/Makefile.win3211
-rw-r--r--extern/verse/dist/resources/verse.icobin17814 -> 0 bytes
-rw-r--r--extern/verse/dist/resources/verse.rc1
-rw-r--r--extern/verse/dist/resources/verse.resbin18060 -> 0 bytes
-rw-r--r--extern/verse/dist/v_bignum.c860
-rw-r--r--extern/verse/dist/v_bignum.h89
-rw-r--r--extern/verse/dist/v_cmd_buf.c119
-rw-r--r--extern/verse/dist/v_cmd_buf.h74
-rw-r--r--extern/verse/dist/v_cmd_def_a.c94
-rw-r--r--extern/verse/dist/v_cmd_def_b.c44
-rw-r--r--extern/verse/dist/v_cmd_def_c.c35
-rw-r--r--extern/verse/dist/v_cmd_def_g.c183
-rw-r--r--extern/verse/dist/v_cmd_def_m.c273
-rw-r--r--extern/verse/dist/v_cmd_def_o.c517
-rw-r--r--extern/verse/dist/v_cmd_def_s.c211
-rw-r--r--extern/verse/dist/v_cmd_def_t.c36
-rw-r--r--extern/verse/dist/v_cmd_gen.c939
-rw-r--r--extern/verse/dist/v_cmd_gen.h42
-rw-r--r--extern/verse/dist/v_connect.c490
-rw-r--r--extern/verse/dist/v_connection.c490
-rw-r--r--extern/verse/dist/v_connection.h73
-rw-r--r--extern/verse/dist/v_encryption.c255
-rw-r--r--extern/verse/dist/v_encryption.h32
-rw-r--r--extern/verse/dist/v_func_storage.c194
-rw-r--r--extern/verse/dist/v_gen_pack_a_node.c521
-rw-r--r--extern/verse/dist/v_gen_pack_b_node.c238
-rw-r--r--extern/verse/dist/v_gen_pack_c_node.c189
-rw-r--r--extern/verse/dist/v_gen_pack_g_node.c1154
-rw-r--r--extern/verse/dist/v_gen_pack_init.c95
-rw-r--r--extern/verse/dist/v_gen_pack_m_node.c352
-rw-r--r--extern/verse/dist/v_gen_pack_o_node.c1297
-rw-r--r--extern/verse/dist/v_gen_pack_s_node.c711
-rw-r--r--extern/verse/dist/v_gen_pack_t_node.c226
-rw-r--r--extern/verse/dist/v_gen_unpack_func.h63
-rw-r--r--extern/verse/dist/v_gen_unpack_funcs.h0
-rw-r--r--extern/verse/dist/v_internal_verse.h2
-rw-r--r--extern/verse/dist/v_man_pack_node.c498
-rw-r--r--extern/verse/dist/v_network.c274
-rw-r--r--extern/verse/dist/v_network.h24
-rw-r--r--extern/verse/dist/v_network_in_que.c140
-rw-r--r--extern/verse/dist/v_network_in_que.h24
-rw-r--r--extern/verse/dist/v_network_out_que.c396
-rw-r--r--extern/verse/dist/v_network_out_que.h17
-rw-r--r--extern/verse/dist/v_pack.c386
-rw-r--r--extern/verse/dist/v_pack.h59
-rw-r--r--extern/verse/dist/v_pack_method.c219
-rw-r--r--extern/verse/dist/v_prime.c165
-rw-r--r--extern/verse/dist/v_randgen.c101
-rw-r--r--extern/verse/dist/v_randgen.h14
-rw-r--r--extern/verse/dist/v_util.c98
-rw-r--r--extern/verse/dist/v_util.h21
-rw-r--r--extern/verse/dist/verse.h530
-rw-r--r--extern/verse/dist/verse_header.h409
-rw-r--r--extern/verse/dist/verse_ms.c286
-rw-r--r--extern/verse/dist/verse_ms.h72
-rw-r--r--extern/verse/dist/vs_connection.c179
-rw-r--r--extern/verse/dist/vs_main.c180
-rw-r--r--extern/verse/dist/vs_master.c131
-rw-r--r--extern/verse/dist/vs_node_audio.c420
-rw-r--r--extern/verse/dist/vs_node_bitmap.c560
-rw-r--r--extern/verse/dist/vs_node_curve.c258
-rw-r--r--extern/verse/dist/vs_node_geometry.c1047
-rw-r--r--extern/verse/dist/vs_node_head.c414
-rw-r--r--extern/verse/dist/vs_node_material.c116
-rw-r--r--extern/verse/dist/vs_node_object.c837
-rw-r--r--extern/verse/dist/vs_node_particle.c52
-rw-r--r--extern/verse/dist/vs_node_storage.c245
-rw-r--r--extern/verse/dist/vs_node_text.c274
-rw-r--r--extern/verse/dist/vs_server.h62
-rw-r--r--extern/verse/make/msvc_7_0/libverse.vcproj279
-rw-r--r--extern/verse/make/msvc_7_0/verse.vcproj481
-rw-r--r--extern/verse/make/msvc_9_0/libverse.vcproj368
-rw-r--r--extern/verse/make/msvc_9_0/verse.vcproj669
-rw-r--r--source/Makefile12
-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
-rw-r--r--source/creator/CMakeLists.txt1
-rw-r--r--source/nan_definitions.mk4
-rw-r--r--source/nan_link.mk3
-rwxr-xr-xtools/btools.py12
144 files changed, 28 insertions, 27435 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2616bff79a3..a593f762387 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,7 +57,6 @@ OPTION(WITH_PLAYER "Build Player" OFF)
OPTION(WITH_GAMEENGINE "Enable Game Engine" ON)
OPTION(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
OPTION(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
-OPTION(WITH_VERSE "Enable Verse (http://verse.blender.org)" OFF)
OPTION(WITH_ELBEEM "Enable Elbeem (Fluid Simulation)" ON)
OPTION(WITH_QUICKTIME "Enable Quicktime Support" OFF)
OPTION(WITH_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
@@ -425,7 +424,6 @@ ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
#-----------------------------------------------------------------------------
# Common.
-SET(VERSE_INC ${CMAKE_SOURCE_DIR}/extern/verse/dist)
SET(FTGL ${CMAKE_SOURCE_DIR}/extern/bFTGL)
SET(FTGL_INC ${FTGL}/include)
diff --git a/config/darwin-config.py b/config/darwin-config.py
index 3ef7b7132d9..8719c5e7da0 100644
--- a/config/darwin-config.py
+++ b/config/darwin-config.py
@@ -46,12 +46,6 @@ if USE_SDK==True:
#BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
#BF_FFMPEG_LIB = 'avformat.a avcodec.a avutil.a'
-WITH_BF_VERSE = False
-BF_VERSE = "#extern/verse/dist"
-BF_VERSE_LIBPATH = "${BF_BUILDDIR}/extern/verse/dist"
-BF_VERSE_INCLUDE = BF_VERSE
-BF_VERSE_LIBS = "libverse"
-
# python.org libs install in /library we want to use that for 2.5
#
# if you want py2.5 on leopard without installing
diff --git a/config/irix6-config.py b/config/irix6-config.py
index b643affb0b3..eb6c46b38de 100644
--- a/config/irix6-config.py
+++ b/config/irix6-config.py
@@ -2,10 +2,6 @@ import os
LCGDIR = os.getcwd()+"/../lib/irix-6.5-mips"
LIBDIR = LCGDIR
-print LCGDIR
-
-WITH_BF_VERSE = 'false'
-BF_VERSE_INCLUDE = "#extern/verse/dist"
BF_PYTHON = LCGDIR+'/python'
BF_PYTHON_VERSION = '2.5'
diff --git a/config/linux2-config.py b/config/linux2-config.py
index 2984c06d2df..522ddbafb3f 100644
--- a/config/linux2-config.py
+++ b/config/linux2-config.py
@@ -1,9 +1,6 @@
LCGDIR = '../lib/linux2'
LIBDIR = "${LCGDIR}"
-WITH_BF_VERSE = False
-BF_VERSE_INCLUDE = "#extern/verse/dist"
-
BF_PYTHON = '/usr'
BF_PYTHON_VERSION = '2.5'
WITH_BF_STATICPYTHON = False
diff --git a/config/linuxcross-config.py b/config/linuxcross-config.py
index 5981c8b96e5..8c643b75d63 100644
--- a/config/linuxcross-config.py
+++ b/config/linuxcross-config.py
@@ -1,9 +1,6 @@
LCGDIR = '#../lib/windows'
LIBDIR = '${LCGDIR}'
-WITH_BF_VERSE = False
-BF_VERSE_INCLUDE = "#extern/verse/dist"
-
WITH_BF_YAFRAY = True
BF_PYTHON = LIBDIR + '/python'
diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py
index e9e9aac1589..d69e4bfc7bc 100644
--- a/config/win32-mingw-config.py
+++ b/config/win32-mingw-config.py
@@ -1,9 +1,6 @@
LCGDIR = '#../lib/windows'
LIBDIR = "${LCGDIR}"
-WITH_BF_VERSE = False
-BF_VERSE_INCLUDE = "#extern/verse/dist"
-
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '2.5'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py
index 8ba8c8f04e6..b21c50c913e 100644
--- a/config/win32-vc-config.py
+++ b/config/win32-vc-config.py
@@ -1,9 +1,6 @@
LCGDIR = '#../lib/windows'
LIBDIR = '${LCGDIR}'
-WITH_BF_VERSE = False
-BF_VERSE_INCLUDE = "#extern/verse/dist"
-
# enable ffmpeg support
WITH_BF_FFMPEG = True # -DWITH_FFMPEG
BF_FFMPEG = LIBDIR +'/ffmpeg'
diff --git a/extern/SConscript b/extern/SConscript
index 4c892e1956d..972d2a8e703 100644
--- a/extern/SConscript
+++ b/extern/SConscript
@@ -14,9 +14,6 @@ if env['WITH_BF_BULLET']:
if env['WITH_BF_INTERNATIONAL']:
SConscript(['bFTGL/SConscript'])
-if env['WITH_BF_VERSE']:
- SConscript(['verse/dist/SConstruct'])
-
if env['WITH_BF_FFMPEG'] and env['BF_FFMPEG_LIB'] == '':
SConscript(['x264/SConscript'])
SConscript(['libmp3lame/SConscript'])
diff --git a/extern/verse/CMakeLists.txt b/extern/verse/CMakeLists.txt
deleted file mode 100644
index 318a550668e..00000000000
--- a/extern/verse/CMakeLists.txt
+++ /dev/null
@@ -1,28 +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.
-#
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jacques Beaurain.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-SUBDIRS(dist)
-
diff --git a/extern/verse/Makefile b/extern/verse/Makefile
deleted file mode 100644
index 51dc5543d2a..00000000000
--- a/extern/verse/Makefile
+++ /dev/null
@@ -1,55 +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.
-#
-# The Original Code is Copyright (C) 2002 by Hans Lambermont
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jiri Hnidek
-#
-# ***** END GPL LICENSE BLOCK *****
-LIBNAME = verse
-SOURCEDIR = extern/$(LIBNAME)
-DIR = $(OCGDIR)/$(SOURCEDIR)
-DIRS = dist
-
-include nan_subdirs.mk
-include nan_compile.mk
-include nan_link.mk
-
-DISTDIR = dist
-CP = ../../intern/tools/cpifdiff.sh
-
-ifeq ($(OS),windows)
- EXT = .exe
-endif
-
-install: all debug
- @[ -d $(NAN_VERSE) ] || mkdir -p $(NAN_VERSE)
- @[ -d $(NAN_VERSE)/include ] || mkdir -p $(NAN_VERSE)/include
- @[ -d $(NAN_VERSE)/lib ] || mkdir -p $(NAN_VERSE)/lib
- @[ -d $(OCGDIR)/bin ] || mkdir -p $(OCGDIR)/bin
- @$(CP) $(DISTDIR)/*.h $(NAN_VERSE)/include
- @$(CP) $(DIR)/libverse.a $(NAN_VERSE)/lib
-ifeq ($(OS),darwin)
- ranlib $(NAN_VERSE)/lib/libverse.a
-endif
- $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/verse$(EXT) $(DIR)/libverse.a $(LIBS) $(SLIBS) $(LLIBS) $(DADD) $(LOPTS)
- @$(CP) $(DIR)/verse$(EXT) $(OCGDIR)/bin
diff --git a/extern/verse/dist/BUGS b/extern/verse/dist/BUGS
deleted file mode 100644
index 8c3603a3a45..00000000000
--- a/extern/verse/dist/BUGS
+++ /dev/null
@@ -1,8 +0,0 @@
-
-Known problems with Verse
-
-2004-03-03
-* The source code needs plenty of cleaning up in order to compile more
- cleanly.
-* License information needs to be added all over the place.
-* Decent documentation is missing.
diff --git a/extern/verse/dist/CMakeLists.txt b/extern/verse/dist/CMakeLists.txt
deleted file mode 100644
index ae130df6410..00000000000
--- a/extern/verse/dist/CMakeLists.txt
+++ /dev/null
@@ -1,90 +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.
-#
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jacques Beaurain.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-SUBDIRS(mkprot_cmd)
-
-SET(SRC_MKPROT_OUT
- v_gen_pack_init.c
- v_gen_pack_a_node.c
- v_gen_pack_b_node.c
- v_gen_pack_c_node.c
- v_gen_pack_g_node.c
- v_gen_pack_m_node.c
- v_gen_pack_o_node.c
- v_gen_pack_s_node.c
- v_gen_pack_t_node.c
-)
-
-SET(INC .)
-
-SET(SRC
- v_cmd_buf.c
- v_connect.c
- v_connection.c
- v_encryption.c
- v_func_storage.c
- v_man_pack_node.c
- v_network.c
- v_network_in_que.c
- v_network_out_que.c
- v_pack.c
- v_pack_method.c
- v_prime.c
- v_randgen.c
- v_util.c
- v_bignum.c
- verse_ms.c
- ${SRC_MKPROT_OUT}
-)
-
-BLENDERLIB(verse "${SRC}" "${INC}")
-ADD_DEPENDENCIES(verse mkprot)
-#verselib = env.BlenderLib(libname='verse', sources=lib_source_files, includes=[], defines=defines, libtype=['core', 'intern'], priority = [5, 5])
-
-SET(SRC_VERSE
- vs_connection.c
- vs_main.c
- vs_node_audio.c
- vs_node_bitmap.c
- vs_node_curve.c
- vs_node_geometry.c
- vs_node_head.c
- vs_node_material.c
- vs_node_object.c
- vs_node_particle.c
- vs_node_storage.c
- vs_node_text.c
- vs_master.c
-)
-
-ADD_EXECUTABLE(verse_server ${SRC_VERSE})
-IF(WIN32)
-TARGET_LINK_LIBRARIES(verse_server verse ws2_32)
-ELSE(WIN32)
-TARGET_LINK_LIBRARIES(verse_server verse)
-ENDIF(WIN32)
-ADD_DEPENDENCIES(verse_server mkprot)
-MESSAGE(STATUS "Configuring verse_server")
diff --git a/extern/verse/dist/MAINTAINERS b/extern/verse/dist/MAINTAINERS
deleted file mode 100644
index c467d5309b8..00000000000
--- a/extern/verse/dist/MAINTAINERS
+++ /dev/null
@@ -1,15 +0,0 @@
-
- Verse Maintainers
-
-This file tries to list credits for the various parts of the
-Verse core distribution, and also identify who maintains what.
-
-We are deeply appreciative of any contributions and thank you
-all for your time and interest in helping make Verse a better
-thing.
-
-* All code was originally written by Eskil Steenberg, and is
- being maintained by him and Emil Brink. Contact us through
- the project page at http://www.blender.org/modules/verse/.
-
-* SCons build file by N. Letwory, http://www.jester-depot.net/.
diff --git a/extern/verse/dist/Makefile b/extern/verse/dist/Makefile
deleted file mode 100644
index 69b5590b2bc..00000000000
--- a/extern/verse/dist/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Makefile for Verse core; API and reference server.
-# This pretty much requires GNU Make, I think.
-#
-# This build is slightly complicated that part of the C code that
-# needs to go into the API implementation is generated by building
-# and running other C files (this is the protocol definition).
-#
-
-LIBNAME = verse
-DIR = $(OCGDIR)/extern/$(LIBNAME)
-
-include nan_compile.mk
-
-# TARGETS = verse
diff --git a/extern/verse/dist/Makefile.win32 b/extern/verse/dist/Makefile.win32
deleted file mode 100644
index 548881c6a16..00000000000
--- a/extern/verse/dist/Makefile.win32
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# Makefile for Verse core; API and reference server.
-# Written by modifying the main GNU Makefile, for nmake.
-#
-# It is more hard-coded, relying on less intelligence in
-# the make tool.
-#
-# This build is slightly complicated that part of the C code that
-# needs to go into the API implementation is generated by building
-# and running other C files (this is the protocol definition).
-#
-
-CC = cl
-CFLAGS =
-LDFLAGS = -pg
-
-AR = ar
-ARFLAGS = rus
-RANLIB = ranlib
-
-TARGETS = verse.lib verse.exe
-
-# Automatically generated protocol things.
-PROT_DEF = v_cmd_def_a.c v_cmd_def_b.c v_cmd_def_c.c v_cmd_def_g.c v_cmd_def_m.c v_cmd_def_o.c v_cmd_def_s.c v_cmd_def_t.c
-PROT_TOOL = v_cmd_gen.c $(PROT_DEF)
-PROT_OUT = v_gen_pack_init.c v_gen_unpack_func.h verse.h \
- v_gen_pack_a_node.c v_gen_pack_b_node.c v_gen_pack_c_node.c v_gen_pack_g_node.c v_gen_pack_m_node.c v_gen_pack_o_node.c v_gen_pack_s_node.c v_gen_pack_t_node.c
-
-# The API implementation is the protocol code plus a few bits.
-LIBVERSE_SRC = v_gen_pack_init.c v_gen_unpack_func.h verse.h v_gen_pack_a_node.c v_gen_pack_b_node.c v_gen_pack_c_node.c v_gen_pack_g_node.c \
- v_gen_pack_m_node.c v_gen_pack_o_node.c v_gen_pack_s_node.c v_gen_pack_t_node.c \
- v_bignum.c v_cmd_buf.c v_connect.c \
- v_connection.c v_connection.h v_encryption.c \
- v_func_storage.c v_internal_verse.h v_man_pack_node.c \
- v_network.c v_network.h v_network_in_que.c v_network_out_que.c \
- v_pack.c v_pack.h v_pack_method.c v_prime.c v_randgen.c v_util.c
-
-LIBVERSE_OBJ = v_gen_pack_init.obj v_gen_pack_a_node.obj v_gen_pack_b_node.obj v_gen_pack_c_node.obj v_gen_pack_g_node.obj \
- v_gen_pack_m_node.obj v_gen_pack_o_node.obj v_gen_pack_s_node.obj v_gen_pack_t_node.obj \
- v_bignum.obj v_cmd_buf.obj v_connect.obj \
- v_connection.obj v_encryption.obj \
- v_func_storage.obj v_man_pack_node.obj \
- v_network.obj v_network_in_que.obj v_network_out_que.obj \
- v_pack.obj v_pack_method.obj v_prime.obj v_randgen.obj v_util.obj
-
-# The server is a simple 1:1 mapping, but in Windows nmake ... That doesn't help much. :/
-VERSE_SRC = vs_connection.c vs_main.c vs_master.c vs_node_audio.c vs_node_bitmap.c vs_node_curve.c vs_node_geometry.c vs_node_head.c vs_node_material.c vs_node_object.c vs_node_particle.c vs_node_storage.c vs_node_text.c
-VERSE_OBJ = vs_connection.obj vs_main.obj vs_master.obj vs_node_audio.obj vs_node_bitmap.obj vs_node_curve.obj vs_node_geometry.obj \
- vs_node_head.obj vs_node_material.obj vs_node_object.obj vs_node_particle.obj vs_node_storage.obj vs_node_text.obj
-
-# -----------------------------------------------------
-
-ALL: verse.lib verse.exe
-
-verse.exe: $(VERSE_OBJ) verse.lib resources\verse.res
- cl /Fe$@ $** wsock32.lib
-
-verse.lib: $(LIBVERSE_OBJ)
- link /lib /nologo /out:$@ $**
-
-# -----------------------------------------------------
-
-# Here are the automatically generated pieces of the puzzle.
-# Basically, we generate v_gen_pack_X_node.c files by compiling
-# the v_cmd_def_X.c files together with some driver glue and
-# running the result.
-#
-
-# The autogen outputs all depend on the tool.
-$(PROT_OUT): mkprot.exe
- mkprot.exe
-
-# Build the protocol maker, from the definitions themselves.
-mkprot.exe: $(PROT_TOOL) verse_header.h
- $(CC) /DV_GENERATE_FUNC_MODE /Fe$@ $(PROT_TOOL)
-
-# Clean away all the generated parts of the protocol implementation.
-cleanprot: clean
- del mkprot $(PROT_OUT) mkprot.exe
-
-# -----------------------------------------------------
-
-clean:
- del *.obj $(TARGETS)
-
-# -----------------------------------------------------
-
-# Utter ugliness to create release archives. Needs to improve, but should work for a while.
-dist:
- RELEASE=$$( \
- R=`grep V_RELEASE_NUMBER verse.h | tr -s ' \t' | tr -d '"\r' | cut -d' ' -f3` ; \
- P=`grep V_RELEASE_PATCH verse.h | tr -s ' \t' | tr -d '"\r' | cut -d' ' -f3` ; \
- L=`grep V_RELEASE_LABEL verse.h | tr -s ' \t' | tr -d '"\r' | cut -d' ' -f3` ; echo r$${R}p$$P$$L ) ; \
- if [ $$RELEASE ]; then ( \
- rm -rf /tmp/verse; \
- mkdir -p /tmp/verse; \
- cp -a * /tmp/verse; \
- cd /tmp && zip verse-$$RELEASE.zip -r verse -x 'verse/*CVS*' -x 'verse/.*' ; \
- ); mv /tmp/verse-$$RELEASE.zip . \
- ;else \
- echo "Couldn't auto-set RELEASE from verse.h, something is fishy" \
- ;fi
diff --git a/extern/verse/dist/README.html b/extern/verse/dist/README.html
deleted file mode 100644
index b3b3050bf12..00000000000
--- a/extern/verse/dist/README.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verse README</title>
-<style type="text/css">
-
-h1.title {
-text-align: center;
-}
-
-p.author {
-text-align: center;
-}
-
-p.note {
-background-color: #ffeeee;
-margin-left: 5em;
-margin-right: 5em;
-border-style: solid;
-border-color: black;
-border-width: thin;
-}
-
-pre.shell {
-background-color: #ddddff;
-border-color: black;
-padding: .5em;
-border-style: solid;
-border-color: black;
-border-width: thin;
-}
-
-ul.variables {
-list-style: none;
-font-family: monospace;
-}
-
-</style>
-</head>
-
-<body>
-<h1 class="title">Verse</h1>
-
-<p>
-This is the Verse protocol and sample server implementations.
-</p>
-<p>
-For more information, see <a href="http://verse.blender.org/">the Verse web site</a>.
-</p>
-<h1>Building the Verse Core</h1>
-<p class="note">
-Note: This section is only of interest to developers, who wish to build the Verse core themselves.
-If you have chosen a binary download, you will already have the server and can skip the rest
-of this section.
-</p>
-<p>
-Running "make" here will build the API library, "libverse.a" (and its
-header file, "verse.h"). These two will then be used to build the
-reference Verse server binary, called "verse".
-</p>
-<p>
-If you are more comfortable with <a href="http://www.scons.org/">SCons</a>, and of course have it
-installed on your system, you can type "scons" instead.
-</p>
-
-<h1>Starting the Server</h1>
-<p>
-The Verse server is a command-line program, without a graphical user interface.
-You simply start it, and it will immediately begin listening for incoming
-connections on a network socket. Here is how a typical invocation looks:
-</p>
-<pre class="shell">~> verse
-</pre>
-<p>
-If you don't ask it to do otherwise, the Verse server will start listening for UDP packets
-on its default port. The port number currently used by Verse is 4950.
-</p>
-<p class="note">
-Note: This is not an official <a href="http://www.iana.org/">registered</a>, port number.
-It is possible that it gets assigned to someone else, in case Verse will need to change.
-</p>
-<p>
-You can use the following command line options to control the server's operation:
-</p>
-<dl>
- <dt>-h</dt>
- <dd>
- Print a help text, that shows all understood options.
- </dd>
- <dt>-ms</dt>
- <dd>
- Enables master server communications to the default, built-in address. Use the -h option to learn
- what this address is. Please note that master server communication is <strong>disabled</strong> by default.
- </dd>
- <dt>-ms:ip=IP</dt>
- <dd>
- Sets a new address to use for master server communication. This also implies -ms, i.e. the server
- will try to register itself with the given master server. For details on the protocol used to do
- this, please see the <a href="http://verse.blender.org/cms/Master_Server__v2.775.0.html">spec</a>.
- </dd>
- <dt>-ms:de=DESC</dt>
- <dd>
- Sets the description to use for this server, when registering with the the master server. This is
- only used if master server communication is actually enabled. The description is expected to be a
- human-readable string, like <code>"A test server, run on a cable modem, and offline during local daytime"</code>
- or something.
- </dd>
- <dt>-ms:ta=TAGS</dt>
- <dd>
- Sets the tags to use for this server, when registering with the the master server. This is only used
- if master server communication is actually enabled. The tags consists of a comma-separated list of
- single words. Each word must begin with a letter, and contain only letters, digits, or underscore
- characters. For instance: <code>home,r6p1,linux,sweden,open</code>.
- </dd>
- <dt>-port=N</dt>
- <dd>
- Use the indicated port number, rather than the default. Note that ports below 1024 are generally
- off-limits to ordinary users. Running Verse on such a port is not recommended.
- </dd>
- <dt>-version</dt>
- <dd>
- Prints the version string of the server to the terminal, and then exits (successfully). See
- <a href="#rellab">below</a> for information how the version string is constructed.
- </dd>
-</dl>
-<p>
-For example, here is how to start the server, register it with the default master server, and run
-on port number equal to 16333:
-</p>
-<pre class="shell">~> ./server -ms -port=16333
-</pre>
-<p>
-Here is a more complicated example, that uses an explicit master server address, and also sets both
-the description and tags:
-</p>
-<pre class="shell">~> ./server -ms:ip=master.example.net -ms:de="A test server, for the documentation" -ms:ta=example,docs
-</pre>
-<p>
-Options can occur in any order, with later options overriding earlier ones, in case of conflicts.
-</p>
-
-<h1><a name="rellab">Release Labeling</a></h1>
-<p>
-Verse uses a simple two-level numbering scheme to identify releases.
-There is a "release number", and a "patch level" on each release. The
-intent is that within a release, the API does not change and neither
-should the network protocol. Between releases, we might improve the
-API which will require application programmers to update their code
-to stay in sync. We can do non-API-altering changes within a release
-by increasing the patch level, for bug fixing and other things.
-</p>
-<p>
-The symbols <code>V_RELEASE_NUMBER</code> and <code>V_RELEASE_PATCH</code>
-are integer literals that hold the values for the API you have, and can be
-used (and displayed) in application source code as you see fit. There is
-also a string, <code>V_RELEASE_LABEL</code>, which is sometimes used.
-</p>
-<p>
-To form a complete Verse version number, the above-mentioned symbols are
-to be combined like so:
-"r<i><code>&lt;V_RELEASE_NUMBER&gt;</code></i>p<i><code>&lt;V_RELEASE_PATCH&gt;&lt;V_RELEASE_LABEL&gt;</code></i>".
-So, the following variable values:
-<ul class="variables">
-<li>V_RELEASE_VERSION = 2
-<li>V_RELEASE_VERSION = 51
-<li>V_RELEASE_LABEL = "foo"
-</ul>
-Would generate the version string "<code>r2p51foo</code>".
-</p>
-
-</body>
-</html>
diff --git a/extern/verse/dist/SConstruct b/extern/verse/dist/SConstruct
deleted file mode 100644
index a80a1ac79e9..00000000000
--- a/extern/verse/dist/SConstruct
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env python
-#
-# I think it is quite straight-forward to add new platforms,
-# just look at the old makefile and at the existing platforms.
-#
-# This SConstruct creates a configuration file which can be
-# used for tweaking a build.
-#
-# For more about SConstruct, see <http://www.scons.org/>.
-#
-
-import os
-import os.path
-import sys
-import re
-import time
-import string
-from distutils import sysconfig
-
-Import('env')
-
-defines = []
-cflags = []
-debug_flags = []
-extra_flags = []
-release_flags = []
-warn_flags = []
-platform_libs = []
-platform_libpath = []
-platform_linkflags = []
-
-ourplatform = env['OURPLATFORM']
-if ourplatform == 'win32-vc':
- print "Building on win32"
- defines += ['_WIN32']
- warn_flags = ['/Wall']
- platform_libs = ['ws2_32']
-elif ourplatform == 'win32-mingw':
- defines += ['_WIN32', 'WIN32']
- platform_libs = ['shell32', 'kernel32', 'gdi32', 'user32', 'ws2_32']
-elif ourplatform == 'linux2':
- print "Building on linux2"
-elif ourplatform == 'openbsd3':
- print "Building on openbsd3"
-
-root_build_dir = env['BF_BUILDDIR']
-
-if env['VERSE_BUILD_BINARY'] == 'release':
- cflags = extra_flags + release_flags + warn_flags
- if ourplatform == 'win32-vc':
- defines += ['NDEBUG']
-else:
- cflags = extra_flags + debug_flags + warn_flags
- if ourplatform == 'win32-vc':
- #defines += ['_DEBUG'] specifying this makes msvc want to link to python22_d.lib??
- platform_linkflags += ['/DEBUG','/PDB:verse.pdb']
-
-
-verse_env = env.Clone()
-
-cmd_gen_files = (['v_cmd_gen.c',
- 'v_cmd_def_a.c',
- 'v_cmd_def_b.c',
- 'v_cmd_def_c.c',
- 'v_cmd_def_g.c',
- 'v_cmd_def_m.c',
- 'v_cmd_def_o.c',
- 'v_cmd_def_s.c',
- 'v_cmd_def_t.c'
- ])
-
-cmd_gen_deps = (['v_gen_pack_init.c'])
-
-proto_env = env.Clone()
-proto_env.Append(CPPDEFINES=['V_GENERATE_FUNC_MODE'])
-mkprot_tool = proto_env.Program(target = 'mkprot', source = cmd_gen_files)
-
-mkprot_re = re.compile('v_cmd_def_([a-z]{1}).c')
-def mkprot_emitter(target = None, source = None, env = None):
- newtargets = list()
- for s in source:
- p, f = os.path.split(str(s))
- m = mkprot_re.match(f)
- if m:
- newtargets.append("v_gen_pack_"+m.group(1)+"_node.c")
- newtargets.extend(['verse.h'])
- env.Depends(newtargets, mkprot_tool)
- return (newtargets, source)
-
-mkprot_bld = Builder(action = "\"" + mkprot_tool[0].abspath + "\" -src=\""+os.getcwd()+os.sep+"extern"+os.sep+"verse"+os.sep+"dist"+os.sep+os.sep+"\" -dst=\""+os.path.abspath(env['BF_BUILDDIR'])+os.sep+"extern"+os.sep+"verse"+os.sep+"dist"+os.sep+os.sep+"\"",
- emitter = mkprot_emitter)
-
-verse_env['BUILDERS']['Protocol'] = mkprot_bld
-
-cmd_gen_deps.extend(verse_env.Protocol('do_mkprot', cmd_gen_files))
-
-cmd_gen_deps.pop()
-
-lib_source_files = (['v_cmd_buf.c',
- 'v_connect.c',
- 'v_connection.c',
- 'v_encryption.c',
- 'v_func_storage.c',
- 'v_man_pack_node.c',
- 'v_network.c',
- 'v_network_in_que.c',
- 'v_network_out_que.c',
- 'v_pack.c',
- 'v_pack_method.c',
- 'v_prime.c',
- 'v_randgen.c',
- 'v_util.c',
- 'v_bignum.c',
- 'verse_ms.c'
- ])
-lib_source_files.extend(cmd_gen_deps)
-
-server_source_files = (['vs_connection.c',
- 'vs_main.c',
- 'vs_master.c',
- 'vs_node_audio.c',
- 'vs_node_bitmap.c',
- 'vs_node_curve.c',
- 'vs_node_geometry.c',
- 'vs_node_head.c',
- 'vs_node_material.c',
- 'vs_node_object.c',
- 'vs_node_particle.c',
- 'vs_node_storage.c',
- 'vs_node_text.c'
- ])
-
-verselib_env = verse_env.Clone()
-verselib_env.Append(CPPDEFINES = defines)
-
-verseserver_env = verse_env.Clone()
-verseserver_env.Append(CPPDEFINES = defines)
-verseserver_env.Append (LIBPATH = ['.'])
-verseserver_env.Append (LIBS= ['verse'])
-verseserver_env.Append (LIBS= platform_libs)
-
-verselib_env.BlenderLib(libname='verse', sources=lib_source_files, includes=["."], defines = defines, libtype=['core', 'intern', 'player'], priority = [5, 5, 100])
-verseserver_env.BlenderProg(builddir="#"+root_build_dir+os.sep, progname='verse', sources=server_source_files, libs=[],
-libpath='#'+env['BF_BUILDDIR']+'/lib')
-
-
diff --git a/extern/verse/dist/examples/list-nodes.c b/extern/verse/dist/examples/list-nodes.c
deleted file mode 100644
index 6c9cc000d7c..00000000000
--- a/extern/verse/dist/examples/list-nodes.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* A minimalist Verse example. Ask server for nodes, print information. */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "verse.h" /* Bring in the Verse API. */
-
-/* A callback for connection acception: will be called when server accepts this client. */
-static void callback_accept_connect(void *user, uint32 avatar, void *address, void *connection, uint8 *host_id)
-{
- uint32 i, mask = 0;
-
- printf("Connected to a Verse host!\n\nListing nodes:\n");
-
- /* Build node subscription mask. */
- for(i = 0; i < V_NT_NUM_TYPES; i++)
- mask |= 1 << i;
- verse_send_node_index_subscribe(mask); /* Request listing of all nodes. */
-}
-
-/* A callback for node creation: is called to report information about existing nodes, too. */
-static void callback_node_create(void *user, VNodeID node_id, VNodeType type, VNodeOwner ownership)
-{
- printf(" Node #%u has type %u\n", node_id, type);
-}
-
-int main(void)
-{
- /* Register callbacks for interesting commands. */
- verse_callback_set(verse_send_connect_accept, callback_accept_connect, NULL);
- verse_callback_set(verse_send_node_create, callback_node_create, NULL);
-
- /* Kick off program by connecting to Verse host on local machine. */
- verse_send_connect("list-nodes", "<secret>", "localhost", NULL);
- while(TRUE)
- verse_callback_update(10000); /* Listen to network, get callbacks. */
-
- return EXIT_SUCCESS; /* This is never reached. */
-}
diff --git a/extern/verse/dist/mkprot_cmd/CMakeLists.txt b/extern/verse/dist/mkprot_cmd/CMakeLists.txt
deleted file mode 100644
index f6e89f912e5..00000000000
--- a/extern/verse/dist/mkprot_cmd/CMakeLists.txt
+++ /dev/null
@@ -1,52 +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.
-#
-# The Original Code is Copyright (C) 2006, Blender Foundation
-# All rights reserved.
-#
-# The Original Code is: all of this file.
-#
-# Contributor(s): Jacques Beaurain.
-#
-# ***** END GPL LICENSE BLOCK *****
-
-SET(SRC
- ../v_cmd_gen.c
- ../v_cmd_def_a.c
- ../v_cmd_def_b.c
- ../v_cmd_def_c.c
- ../v_cmd_def_g.c
- ../v_cmd_def_m.c
- ../v_cmd_def_o.c
- ../v_cmd_def_s.c
- ../v_cmd_def_t.c
-)
-
-ADD_DEFINITIONS(-DV_GENERATE_FUNC_MODE)
-ADD_EXECUTABLE(mkprot ${SRC})
-
-# Uncoment the following to get verse to generate the files using dependency
-# tracking without having the generated files submitted in CVS.
-#
-#ADD_CUSTOM_COMMAND(TARGET mkprot
-# POST_BUILD
-# COMMAND mkprot -src=${CMAKE_CURRENT_SOURCE_DIR}/../ -dst=${CMAKE_CURRENT_SOURCE_DIR}/../
-# MAIN_DEPENDENCY ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/mkprot
-# WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}
-#)
-MESSAGE(STATUS "Configuring mkprot(verse)")
-
diff --git a/extern/verse/dist/resources/Makefile.win32 b/extern/verse/dist/resources/Makefile.win32
deleted file mode 100644
index 8e7b4a09bbd..00000000000
--- a/extern/verse/dist/resources/Makefile.win32
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# This builds a resource file for the Verse server, for the icon.
-#
-
-ALL: verse.res
-
-verse.res: verse.rc
-
-
-clean:
- del *.res
diff --git a/extern/verse/dist/resources/verse.ico b/extern/verse/dist/resources/verse.ico
deleted file mode 100644
index b30f4c927ef..00000000000
--- a/extern/verse/dist/resources/verse.ico
+++ /dev/null
Binary files differ
diff --git a/extern/verse/dist/resources/verse.rc b/extern/verse/dist/resources/verse.rc
deleted file mode 100644
index a068a6f3e3e..00000000000
--- a/extern/verse/dist/resources/verse.rc
+++ /dev/null
@@ -1 +0,0 @@
-1 ICON verse.ico
diff --git a/extern/verse/dist/resources/verse.res b/extern/verse/dist/resources/verse.res
deleted file mode 100644
index ed4db6ca27f..00000000000
--- a/extern/verse/dist/resources/verse.res
+++ /dev/null
Binary files differ
diff --git a/extern/verse/dist/v_bignum.c b/extern/verse/dist/v_bignum.c
deleted file mode 100644
index 3f65af03427..00000000000
--- a/extern/verse/dist/v_bignum.c
+++ /dev/null
@@ -1,860 +0,0 @@
-/*
- * Routines for big (thousands of bits) unsigned integers, and
- * doing simple maths operations on them. Written by Emil Brink.
- *
- * Part of the Verse core, see license details elsewhere.
- *
- * Bignums are represented as vectors of VBigDig (unsigned short),
- * where the first element holds the length of the number in such
- * digits. So a 32-bit number would be { 2, low, high }; digits are
- * in little-endian format.
- *
- * Verse's uint16 and uint32 types are *not* used, since there is no
- * need to limit the bits. If your machine has 32-bit shorts and 64-
- * bit ints, this code should cope.
- *
- * By using unsigned shorts, which are assumed to be half the size of
- * an unsigned int, we can easily do intermediary steps in int-sized
- * variables, and thus get space for manual carry-management.
- *
- * This is the second incarnation of this code, the first one used
- * a fixed 2,048-bit VBigNum structure passed by value. It had to be
- * replaced since it was too weak for the desired functionality. Now,
- * there's roughly 1,5 weeks of time gone into this code, which still
- * means it's optimized for simplicity rather than speed.
- *
- * There has been neither time nor interest to meditate over FFTs and
- * Karatsubas. Reasonable improvements are of course welcome, although
- * this code *should* not be a bottleneck. Famous last words...
- *
- * In general, these routines do not do a lot of error checking, they
- * assume you know what you're doing. Numbers must have >0 digits.
- * Shifts should not be overly large (1e3 bits: safe, ~2e9+: avoid).
-*/
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_randgen.h"
-
-#include "v_bignum.h"
-
-#define MAX_DIG ((1UL << V_BIGBITS) - 1)
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Some routines need temporary storage to hold a term or two (the multi-
- * plier, for instance). Since we don't want to use malloc()/free(), let's
- * just have a bunch of digits that it's possible to allocate from in a
- * stack-like manner.
-*/
-static VBigDig heap[2048 + 32];
-static unsigned int heap_pos;
-
-/* Allocate a number of <n> digits, returning it un-initialized. */
-static VBigDig * bignum_alloc(unsigned int n)
-{
- VBigDig *y;
-
- if(heap_pos + n > sizeof heap / sizeof *heap)
- {
- printf("Out of memory in bignum heap -- unbalanced calls?\n");
- return NULL;
- }
- y = heap + heap_pos;
- heap_pos += n + 1;
- *y = n;
- return y;
-}
-
-/* Free a number previously allocated by bignum_allow() above. MUST match in sequences. */
-static void bignum_free(const VBigDig *x)
-{
- heap_pos -= *x + 1;
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Set x from bits. External representation is big-endian byte array. */
-void v_bignum_raw_import(VBigDig *x, const void *bits)
-{
- const unsigned char *bytes = bits;
- int i;
-
- for(i = *x++ - 1; i >= 0; i--)
- {
- x[i] = ((VBigDig) *bytes++) << 8;
- x[i] |= *bytes++;
- }
-}
-
-/* Set bits to value of x. External representation is big-endian byte array. */
-void v_bignum_raw_export(const VBigDig *x, void *bits)
-{
- unsigned char *bytes = bits;
- int i;
-
- for(i = *x++ - 1; i >= 0; i--)
- {
- *bytes++ = x[i] >> 8;
- *bytes++ = (unsigned char) x[i];
- }
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Assigns x = 0. */
-void v_bignum_set_zero(VBigDig *x)
-{
- memset(x + 1, 0, *x * sizeof *x);
-}
-
-/* Assigns x = 1. */
-void v_bignum_set_one(VBigDig *x)
-{
- int i;
-
- for(i = *x++ - 1, *x++ = 1; i > 0; i--)
- *x++ = 0;
-}
-
-/* Assigns x = y. */
-void v_bignum_set_digit(VBigDig *x, VBigDig y)
-{
- v_bignum_set_zero(x);
- x[1] = y;
-}
-
-/* Assigns x = <string>, with string in decimal ASCII. Kind of slow. */
-void v_bignum_set_string(VBigDig *x, const char *string)
-{
- unsigned int d;
-
- v_bignum_set_zero(x);
- for(; *string && isdigit(*string); string++)
- {
- v_bignum_mul_digit(x, 10);
- d = *string - '0';
- v_bignum_add_digit(x, d);
- }
-}
-
-/* Assigns x = <string>, with string in hexadecimal ASCII. */
-void v_bignum_set_string_hex(VBigDig *x, const char *string)
-{
- unsigned int d;
-
- if(string[0] == '0' && (string[1] == 'x' || string[1] == 'X'))
- string += 2;
- v_bignum_set_zero(x);
- for(; *string && isxdigit(*string); string++)
- {
- v_bignum_bit_shift_left(x, 4);
- d = tolower(*string) - '0';
- if(d > 9)
- d -= ('a' - '0') - 10;
- x[1] |= (d & 0xF);
- }
-}
-
-/* Performs x = y, taking care to handle different precisions correctly by truncating. */
-void v_bignum_set_bignum(VBigDig *x, const VBigDig *y)
-{
- int xs, ys, i, s;
-
- xs = x[0];
- ys = y[0];
- if(xs == ys) /* For same sizes, just memcpy() and be done. */
- {
- memcpy(x + 1, y + 1, xs * sizeof *x);
- return;
- }
- else if(ys > xs)
- s = xs;
- else
- s = ys;
- /* Copy as many digits as will fit, and clear any remaining high digits. */
- for(i = 1; i <= s; i++)
- x[i] = y[i];
- for(; i <= xs; i++)
- x[i] = 0;
-}
-
-/* Performs x = y[msb:msb-bits], right-adjusting the result. */
-void v_bignum_set_bignum_part(VBigDig *x, const VBigDig *y, unsigned int msb, unsigned int bits)
-{
- unsigned int i, bit;
-
- v_bignum_set_zero(x);
- if(y == NULL || msb > (y[0] * (CHAR_BIT * sizeof *x)))
- return;
- for(i = 0; i < bits; i++)
- {
- bit = msb - (bits - 1) + i;
- if(v_bignum_bit_test(y, bit))
- v_bignum_bit_set(x, i);
- }
-}
-
-/* Set x to a random bunch of bits. Should use a real random source. */
-void v_bignum_set_random(VBigDig *x, VRandGen *gen)
-{
- unsigned int s = *x++;
-
- if(gen != NULL)
- v_randgen_get(gen, x, s * sizeof *x);
- else
- {
- fprintf(stderr, "** Warning: Calling v_bignum_set_random() without VRandGen is potentially expensive\n");
- if((gen = v_randgen_new()) != NULL)
- {
- v_randgen_get(gen, x, s * sizeof *x);
- v_randgen_destroy(gen);
- }
- else
- fprintf(stderr, __FILE__ ": Couldn't create random number generator\n");
- }
-}
-
-/* Print x in hexadecimal, with 0x prefix but no linefeed. */
-void v_bignum_print_hex(const VBigDig *x)
-{
- int i, s = *x;
-
- printf("0x");
- for(i = 0; i < s; i++)
- printf("%04X", x[s - i]);
-}
-
-/* Print x in hexadecimal, with linefeed. */
-void v_bignum_print_hex_lf(const VBigDig *x)
-{
- v_bignum_print_hex(x);
- printf("\n");
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* x = ~x. */
-void v_bignum_not(VBigDig *x)
-{
- unsigned int i, s = *x++;
-
- for(i = 0; i < s; i++)
- x[i] = ~x[i];
-}
-
-int v_bignum_bit_test(const VBigDig *x, unsigned int bit)
-{
- unsigned int slot = bit / (CHAR_BIT * sizeof *x), m = 1 << (bit % (CHAR_BIT * sizeof *x));
-
- if(slot < x[0])
- return (x[slot + 1] & m) != 0;
- return 0;
-}
-
-/* Compute x |= (1 << bit). */
-void v_bignum_bit_set(VBigDig *x, unsigned int bit)
-{
- unsigned int slot, m;
-
- if(bit >= (*x * (CHAR_BIT * sizeof *x)))
- return;
- slot = bit / (CHAR_BIT * sizeof *x);
- m = 1 << (bit % (CHAR_BIT * sizeof *x));
- x[1 + slot] |= m;
-}
-
-/* Returns index of most signifant '1' bit of x, or -1 if x == 0. */
-int v_bignum_bit_msb(const VBigDig *x)
-{
- int i;
- unsigned int s = *x++;
-
- for(i = s - 1; i >= 0; i--)
- {
- if(x[i] != 0)
- {
- int bit = (i + 1) * (CHAR_BIT * sizeof *x) - 1;
- VBigDig d = x[i], mask;
-
- for(mask = 1 << (CHAR_BIT * sizeof *x - 1); mask != 0; mask >>= 1, bit--)
- {
- if(d & mask)
- return bit;
- }
- }
- }
- return -1;
-}
-
-int v_bignum_bit_size(const VBigDig *x)
-{
- return *x * V_BIGBITS;
-}
-
-/* Perform x <<= count. */
-void v_bignum_bit_shift_left(VBigDig *x, unsigned int count)
-{
- unsigned int t, carry, s = *x++;
- register int i;
-
- if(count >= CHAR_BIT * sizeof *x) /* Shift whole digits. */
- {
- unsigned int places = count / (CHAR_BIT * sizeof *x);
-
- for(i = s - 1; i >= (int) places; i--)
- x[i] = x[i - places];
- for(; i >= 0; i--) /* Clear out the LSBs. */
- x[i] = 0;
- count -= places * (CHAR_BIT * sizeof *x);
- if(count == 0)
- return;
- }
- /* Shift bits. */
- for(i = carry = 0; i < (int) s; i++)
- {
- t = (x[i] << count) | carry;
- x[i] = t;
- carry = t >> (CHAR_BIT * sizeof *x);
- }
-}
-
-/* Perform x <<= 1. This is a frequent operation so it can have its own function. */
-void v_bignum_bit_shift_left_1(VBigDig *x)
-{
- register unsigned int t, carry, s = *x++, i;
-
- /* Shift bits. */
- for(i = carry = 0; i < s; i++)
- {
- t = (x[i] << 1) | carry;
- x[i] = t;
- carry = t >> (CHAR_BIT * sizeof *x);
- }
-}
-
-/* Perform x >>= count. */
-void v_bignum_bit_shift_right(VBigDig *x, unsigned int count)
-{
- unsigned int t, carry, s = *x++;
- int i;
-
- /* Shift entire digits first. */
- if(count >= CHAR_BIT * sizeof *x)
- {
- unsigned int places = count / (CHAR_BIT * sizeof *x);
-
- if(places > s)
- {
- memset(x, 0, s * sizeof *x);
- return;
- }
- for(i = 0; i < (int) (s - places); i++)
- x[i] = x[i + places];
- for(; i < (int) s; i++)
- x[i] = 0;
- count -= places * CHAR_BIT * sizeof *x;
- if(count == 0)
- return;
- }
- /* Shift any remaining bits. */
- for(i = s - 1, carry = 0; i >= 0; i--)
- {
- t = x[i] << (CHAR_BIT * sizeof *x);
- t >>= count;
- t |= carry;
- carry = (t & MAX_DIG) << (CHAR_BIT * sizeof *x);
- x[i] = t >> (CHAR_BIT * sizeof *x);
- }
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Return x == 0. */
-int v_bignum_eq_zero(const VBigDig *x)
-{
- unsigned int i, s = *x++;
-
- for(i = 0; i < s; i++)
- if(x[i])
- return 0;
- return 1;
-}
-
-/* Return x == 1. */
-int v_bignum_eq_one(const VBigDig *x)
-{
- unsigned int i, s = *x++;
-
- if(x[0] != 1)
- return 0;
- for(i = 1; i < s; i++)
- if(x[i])
- return 0;
- return 1;
-}
-
-/* Returns x == y, handling different lengths properly. */
-int v_bignum_eq(const VBigDig *x, const VBigDig *y)
-{
- unsigned int i, xs, ys, cs;
-
- if(x == y) /* Quick test thanks to pointer representation. */
- return 1;
- xs = *x++;
- ys = *y++;
-
- if(xs == ys) /* Same size? Then let's be quick about this. */
- return memcmp(x, y, xs * sizeof *x) == 0;
- else
- {
- cs = xs < ys ? xs : ys; /* Common size. */
- if(memcmp(x, y, cs * sizeof *x) == 0)
- {
- const VBigDig *l;
-
- if(cs == xs) /* y is longer. */
- l = y, i = ys - 1;
- else
- l = x, i = xs - 1;
- for(; i > cs; i--)
- if(l[i])
- return 0;
- return 1;
- }
- }
- return 0;
-}
-
-/* Returns x >= y. */
-int v_bignum_gte(const VBigDig *x, const VBigDig *y)
-{
- unsigned int xs, ys;
- int i, j, k;
-
- if(x == y)
- return 1;
- /* Find indexes of highest-most used digit in each of the numbers. */
- xs = *x++;
- ys = *y++;
- for(i = xs - 1; i >= 0; i--)
- if(x[i] != 0)
- break;
- for(j = ys - 1; j >= 0; j--)
- if(y[j] != 0)
- break;
- /* Both zero? */
- if(i < 0 && j < 0)
- return 1;
- /* Quick answers exists for different-sized numbers. Find them. */
- if(i < j)
- return 0;
- if(i > j)
- return 1;
- /* Compare digit by digit. */
- for(k = i; k >= 0; k--)
- {
- if(x[k] < y[k])
- return 0;
- if(x[k] > y[k])
- return 1;
- }
- return x[k] >= y[k];
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Computes x += y. */
-void v_bignum_add_digit(VBigDig *x, VBigDig y)
-{
- unsigned int i, s = *x++, t;
-
- t = x[0] + y;
- x[0] = t;
- if(t > MAX_DIG)
- {
- for(i = 1; i < s; i++)
- {
- if(++x[i])
- break;
- }
- }
-}
-
-/* Computes x -= y. */
-void v_bignum_sub_digit(VBigDig *x, VBigDig y)
-{
- unsigned int i, s = *x++, t;
-
- t = x[0] - y;
- x[0] = t;
- if(t > MAX_DIG)
- {
- for(i = 1; i < s; i++)
- {
- x[i]--;
- if(x[i] < MAX_DIG)
- break;
- }
- }
-}
-
-/* Computes x *= y. */
-void v_bignum_mul_digit(VBigDig *x, VBigDig y)
-{
- unsigned int i, s = *x++, carry, t;
-
- for(i = carry = 0; i < s; i++)
- {
- t = x[i] * y + carry;
- x[i] = t;
- carry = t >> (CHAR_BIT * sizeof *x);
- }
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Computes x += y. */
-void v_bignum_add(VBigDig *x, const VBigDig *y)
-{
- unsigned int i, xs = *x++, ys = *y++, s, carry, t;
-
- s = xs < ys ? xs : ys;
- for(i = carry = 0; i < s; i++)
- {
- t = x[i] + y[i] + carry;
- x[i] = t;
- carry = t > MAX_DIG;
- }
- for(; carry && i < xs; i++)
- {
- t = x[i] + carry;
- x[i] = t;
- carry = t > MAX_DIG;
- }
-}
-
-/* Computes x -= y. */
-void v_bignum_sub(VBigDig *x, const VBigDig *y)
-{
- unsigned int i, xs = *x++, ys = *y++, s, carry, t;
-
- if(x == y)
- {
- v_bignum_set_zero(x - 1);
- return;
- }
- s = xs < ys ? xs : ys;
- for(i = carry = 0; i < s; i++)
- {
- t = x[i] - y[i] - carry;
- x[i] = t;
- carry = t > MAX_DIG;
- }
- for(; carry && i < xs; i++)
- {
- t = x[i] - carry;
- x[i] = t;
- carry = t > MAX_DIG;
- }
-}
-
-/* Compute x *= y, using as many digits as is necessary, then truncating the
- * result down. This is Algorithm 14.12 from "Handbook of Applied Cryptography".
-*/
-void v_bignum_mul(VBigDig *x, const VBigDig *y)
-{
- int n = *x, t = *y, i, j;
- VBigDigs uv = 0, c, w[2048];
-
- memset(w, 0, (n + t + 1) * sizeof *w);
- for(i = 0; i < t; i++)
- {
- c = 0;
- for(j = 0; j < n; j++)
- {
- uv = w[i + j] + x[1 + j] * y[1 + i] + c;
- w[i + j] = uv & ((1 << V_BIGBITS) - 1);
- c = uv >> V_BIGBITS;
- }
- w[i + n + 1] = uv >> V_BIGBITS;
- }
- /* Write low words of w back into x. */
- for(i = 0; i < *x; i++)
- x[1 + i] = w[i];
-}
-
-/* Computes x /= y and remainder = x % y. */
-void v_bignum_div(VBigDig *x, const VBigDig *y, VBigDig *remainder)
-{
- VBigDig *q, *work;
- int msbx = v_bignum_bit_msb(x), msby = v_bignum_bit_msb(y), next;
-
- /* Compare magnitudes of inputs, allows quick exits. */
- if(msby > msbx)
- {
- if(remainder != NULL)
- v_bignum_set_bignum(remainder, x);
- v_bignum_set_zero(x);
- return;
- }
- if(msby < 0)
- {
- v_bignum_set_zero(x);
- return;
- }
- q = bignum_alloc(*x);
- v_bignum_set_zero(q);
- work = bignum_alloc(*x);
- v_bignum_set_bignum_part(work, x, msbx, msby + 1);
-
- for(next = msbx - (msby + 1); next >= -1; next--)
- {
- v_bignum_bit_shift_left_1(q);
- if(v_bignum_gte(work, y))
- {
- q[1] |= 1;
- v_bignum_sub(work, y);
- }
- v_bignum_bit_shift_left_1(work);
- if(v_bignum_bit_test(x, next))
- work[1] |= 1;
- }
- v_bignum_bit_shift_right(work, 1); /* Undo the last shift (when next==-1). */
-
- if(remainder != NULL)
- {
-/* printf("div() got remainder ");
- v_bignum_print_hex_lf(work);
-*/
- v_bignum_set_bignum(remainder, work);
- }
- bignum_free(work);
- v_bignum_set_bignum(x, q);
- bignum_free(q);
-}
-
-/* Computes x %= y. */
-void v_bignum_mod(VBigDig *x, const VBigDig *y)
-{
- int digs;
- VBigDig *tmp;
-
-/* printf("computing ");
- v_bignum_print_hex(x);
- printf("L %% ");
- v_bignum_print_hex(y);
-*/
- digs = *x > *y ? *x : *y;
- tmp = bignum_alloc(digs);
- v_bignum_div(x, y, tmp);
- v_bignum_set_bignum(x, tmp);
- bignum_free(tmp);
-/* printf("L = ");
- v_bignum_print_hex_lf(x);
-*/
-}
-
-/* Initialize Barrett reduction by computing the "mu" helper value. Defined in
- * Handbook of Applied Cryptography algorithm 14.42 as floor(b^2k / m).
-*/
-const VBigDig * v_bignum_reduce_begin(const VBigDig *m)
-{
- VBigDig *mu;
- int k;
-
- for(k = *m; m[k] == 0; k--)
- ;
-/* printf("k=%d -> digits are 0..%u\n", k, k - 1);
- printf("computing mu=floor(65536^%d/", 2 * k);
- v_bignum_print_hex(m);
- printf(")\n");
-*/ mu = bignum_alloc(2 * k + 1);
- /* b ^ 2k is just 65536 << 2k, i.e. set bit 16 * 2k. */
- v_bignum_set_zero(mu);
- v_bignum_bit_set(mu, V_BIGBITS * 2 * k);
-/* v_bignum_print_hex_lf(mu);*/
- v_bignum_div(mu, m, NULL);
-
- return mu;
-}
-
-void v_bignum_reduce_end(const VBigDig *mu)
-{
- bignum_free(mu);
-}
-
-/* Compute x % m, using mu as the helper quantity mu, precomputed by the
- * routine above.
-*/
-void v_bignum_reduce(VBigDig *x, const VBigDig *m, const VBigDig *mu)
-{
- VBigDig *q, *r1, *r2, *r;
- int i, k;
-
- for(k = *m; m[k] == 0; k--)
- ;
- /* Step 1, compute the q helper. */
- q = bignum_alloc(*x + *mu - (k - 1)); /* Tighter bound number length (was 2 * *x). */
- v_bignum_set_bignum(q, x);
- v_bignum_bit_shift_right(q, V_BIGBITS * (k - 1));
- v_bignum_mul(q, mu);
- v_bignum_bit_shift_right(q, V_BIGBITS * (k + 1));
-
- /* Step 2, initialize. */
- r1 = bignum_alloc(*x);
- r2 = bignum_alloc(*x);
- v_bignum_set_bignum(r1, x);
- for(i = k + 1; i < *r1; i++)
- r1[i + 1] = 0;
- v_bignum_set_bignum(r2, q);
- v_bignum_mul(r2, m);
- for(i = k + 1; i < *r2; i++)
- r2[i + 1] = 0;
- r = x;
- v_bignum_set_bignum(r, r1);
- v_bignum_sub(r, r2);
- /* Step 3, make sure r is positive. */
- if(v_bignum_bit_test(r, V_BIGBITS * *r - 1))
- {
- VBigDig *term;
-
- term = bignum_alloc(k + 1 * V_BIGBITS);
- v_bignum_set_zero(term);
- v_bignum_bit_set(term, V_BIGBITS * (k + 1));
- v_bignum_add(r, term);
- bignum_free(term);
- }
- /* Step 4, loop. */
- while(v_bignum_gte(r, m))
- v_bignum_sub(r, m);
-
- bignum_free(r2);
- bignum_free(r1);
- bignum_free(q);
-}
-
-/* Compute x * x using the algorithm 14.16 from "Handbook of Applied Cryptography".
- * Note that since 'w' needs to be double-precision (i.e., 32-bit), we cannot allocate
- * it using bignum_alloc() cleanly. Thus the static limit, which should be enough here.
- * NOTE: This very much assumes V_BIGBITS == 16.
-*/
-void v_bignum_square_half(VBigDig *x)
-{
- VBigDigs w[256], uv, c, ouv;
- int t = *x / 2, i, j, high;
-
- if(t == 0)
- return;
- for(; x[t] == 0; t--)
- ;
- memset(w, 0, 2 * t * sizeof *w); /* Clear digits of w. */
-/* printf("print %lu, ", ++count);
- v_bignum_print_hex(x);
- printf("*");
- v_bignum_print_hex(x);
-*/ for(i = 0; i < t; i++)
- {
-/* printf("computing w[%d]: %lX + %lX * %lX\n", 2 * i, w[2 * i], x[1 + i], x[1 + i]);*/
- uv = w[2 * i] + x[1 + i] * x[1 + i];
-/* printf("setting w[%d]=%X [before]\n", 2 * i, uv & 0xffff);*/
- w[2 * i] = uv & 0xffff;
- c = uv >> V_BIGBITS;
-/* printf("uv before=%X, c=%X\n", uv, c);*/
- high = 0;
- for(j = i + 1; j < t; j++)
- {
-/* printf("computing uv=%X+2*%X*%X+%X\n", w[i + j], x[1 + j], x[1 + i], c);*/
- uv = ((VBigDigs)x[1 + j]) * ((VBigDigs)x[1 + i]);
- high = (uv & 0x80000000) != 0;
- uv *= 2;
- ouv = uv; /* Addition below might wrap and generate high bit. */
- uv += w[i + j] + c;
-/* printf("ouv=0x%lX uv=0x%lX\n", ouv, uv);*/
- high |= uv < ouv;
-/* printf("setting w[%d]=%lX [inner] uv=%lX high=%d c=%X\n", i + j, uv & 0xffff, uv, high, c);*/
- w[i + j] = uv & 0xffff;
- c = (uv >> V_BIGBITS) | (high << V_BIGBITS);
- }
-/* printf("setting w[%d] to %X [after]\n", i + t, (uv >> 16) | (high << 16));*/
- w[i + t] = (uv >> V_BIGBITS) | (high << V_BIGBITS);
- }
-/* printf("w=0x");
- for(i = *x - 1; i >= 0; i--)
- printf("%04X.", w[i]);
- printf("\n");
-*/ /* Write low words of w back into x, trashing it with the square. */
- for(i = 0; i < 2 * t; i++)
- x[1 + i] = w[i];
- for(; i < *x; i++)
- x[1 + i] = 0;
-/* printf("==");
- v_bignum_print_hex_lf(x);
-*/
-}
-
-/* Computes x = (x^y) % n, where ^ denotes exponentiation. */
-void v_bignum_pow_mod(VBigDig *x, const VBigDig *y, const VBigDig *n)
-{
- VBigDig *tmp;
- const VBigDig *mu;
- int i, k;
-
-/* printf("computing pow(");
- v_bignum_print_hex(x);
- printf("L,");
- v_bignum_print_hex(y);
- printf("L,");
- v_bignum_print_hex(n);
- printf("L)\n");
-*/
- tmp = bignum_alloc(2 * *x); /* Squaring needs twice the bits, or lossage occurs. */
- v_bignum_set_bignum(tmp, x);
- k = v_bignum_bit_msb(y);
- mu = v_bignum_reduce_begin(n);
- for(i = k - 1; i >= 0; i--)
- {
- v_bignum_square_half(tmp);
- v_bignum_reduce(tmp, n, mu);
- if(v_bignum_bit_test(y, i))
- {
- v_bignum_mul(tmp, x);
- v_bignum_reduce(tmp, n, mu);
- }
- }
- v_bignum_set_bignum(x, tmp);
- v_bignum_reduce_end(mu);
- bignum_free(tmp);
-}
-
-/* ----------------------------------------------------------------------------------------- */
-
-#if defined STANDALONE
-
-int main(void)
-{
- VBigDig VBIGNUM(x, 3648), VBIGNUM(y, 128), VBIGNUM(z, 128);
-
- printf("MAX_DIG=%u\n", MAX_DIG);
-
- v_bignum_set_string_hex(x, "0x433864FE0F8FAC180FF1BC3A5BFD0C5566F6B11679E27294EDCC43056EB73EE118415E0CD6E6519509476EB21341ED0328BA7B14E0ED80D5E100A4549C5202B57B4CF17A74987631B6BA896C0DBA2095A7EDE5B9C4B4EEFCD1B9EF8474BCB7FBD0F64B549625D444847ED1FCB7F8050EB4F22794F694A0FAC6DFFB781C264B227966840185F9216484F6A7954741CB11FC14DEC2937EAD2CE640FD9A4339706BDB5BC355079C2F2F7994669DFA5B20C50D957A676E67C86835037078323A0BDAD3686B8E638749F327A7AD433C0D18BCD2FC970D125914C7FBEE061290A0F0F3572E207");
- v_bignum_set_bignum(y, x);
- v_bignum_set_digit(z, 77);
-
- printf("x:");
- v_bignum_print_hex_lf(x);
- printf("y:");
- v_bignum_print_hex_lf(y);
- printf("r:");
- v_bignum_print_hex_lf(z);
- v_bignum_pow_mod(x, y, z);
- printf(" =");
- v_bignum_print_hex_lf(x);
-
- return 0;
-}
-
-#endif /* STANDALONE */
diff --git a/extern/verse/dist/v_bignum.h b/extern/verse/dist/v_bignum.h
deleted file mode 100644
index 06e58844452..00000000000
--- a/extern/verse/dist/v_bignum.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Verse routines for big integer operations.
- * Handy in heavy encryption done during connect.
-*/
-
-#include <limits.h>
-
-#include "v_randgen.h"
-
-/* ----------------------------------------------------------------------------------------- */
-
-typedef unsigned short VBigDig; /* Type used to hold one digit of a bignum. */
-typedef unsigned int VBigDigs; /* Should hold precisely two digits. */
-
-#define V_BIGBITS (CHAR_BIT * sizeof (VBigDig))
-
-/* Use this macro to initialize big number variables, like so:
- * VBigDig BIGNUM(foo, 128), BIGNUM(bar, 256);
- * Creates automatic variables 'foo' of 128 bits, and 'bar' of 256.
- *
- * Note that 'bits' must be a multiple of V_BIGBITS, completely
- * arbitrary number sizes are not supported by this module.
-*/
-#define VBIGNUM(n, bits) n[1 + (bits / V_BIGBITS)] = { bits / V_BIGBITS }
-
-/* ----------------------------------------------------------------------------------------- */
-
-/* Import/export numbers from raw bits. The number x must have been allocated
- * with the desired number of bits to read/write.
-*/
-extern void v_bignum_raw_import(VBigDig *x, const void *bits);
-extern void v_bignum_raw_export(const VBigDig *x, void *bits);
-
-/* Initializers. */
-extern void v_bignum_set_zero(VBigDig *x);
-extern void v_bignum_set_one(VBigDig *x);
-extern void v_bignum_set_digit(VBigDig *x, VBigDig y);
-extern void v_bignum_set_string(VBigDig *x, const char *string); /* Decimal. */
-extern void v_bignum_set_string_hex(VBigDig *x, const char *string);
-extern void v_bignum_set_bignum(VBigDig *x, const VBigDig *y);
-/* x = <bits> most significant <bits> bits of <y>, starting at <msb>. Right-
- * adjusted in x, so that e.g. y=0xcafebabec001 msb=47 bits=16 gives x=0xcafe.
-*/
-extern void v_bignum_set_bignum_part(VBigDig *x, const VBigDig *y,
- unsigned int msb, unsigned int bits);
-extern void v_bignum_set_random(VBigDig *x, VRandGen *gen);
-
-/* Handy during debugging. */
-extern void v_bignum_print_hex(const VBigDig *x);
-extern void v_bignum_print_hex_lf(const VBigDig *x);
-
-/* Bit operators. */
-extern void v_bignum_not(VBigDig *x);
-extern int v_bignum_bit_test(const VBigDig *x, unsigned int bit);
-extern void v_bignum_bit_set(VBigDig *x, unsigned int bit);
-extern int v_bignum_bit_msb(const VBigDig *x);
-extern int v_bignum_bit_size(const VBigDig *x);
-extern void v_bignum_bit_shift_left(VBigDig *x, unsigned int count);
-extern void v_bignum_bit_shift_left_1(VBigDig *x);
-extern void v_bignum_bit_shift_right(VBigDig *x, unsigned int count);
-
-/* Comparators. */
-extern int v_bignum_eq_zero(const VBigDig *x); /* x == 0. */
-extern int v_bignum_eq_one(const VBigDig *x); /* x == 1. */
-extern int v_bignum_eq(const VBigDig *x, const VBigDig *y); /* x == y. */
-extern int v_bignum_gte(const VBigDig *x, const VBigDig *y); /* x >= y. */
-
-/* Number vs single-digit arithmetic. */
-extern void v_bignum_add_digit(VBigDig *x, VBigDig y); /* x += y. */
-extern void v_bignum_sub_digit(VBigDig *x, VBigDig y); /* x -= y. */
-extern void v_bignum_mul_digit(VBigDig *x, VBigDig y); /* x *= y. */
-
-/* Arithmetic. */
-extern void v_bignum_add(VBigDig *x, const VBigDig *y); /* x += y. */
-extern void v_bignum_sub(VBigDig *x, const VBigDig *y); /* x -= y. */
-extern void v_bignum_mul(VBigDig *x, const VBigDig *y); /* x *= y. */
-extern void v_bignum_div(VBigDig *x, const VBigDig *y, VBigDig *remainder);
-extern void v_bignum_mod(VBigDig *x, const VBigDig *y); /* x %= y. */
-
-/* Barrett reducer for fast x % m computation. Requires precalcing step. */
-extern const VBigDig * v_bignum_reduce_begin(const VBigDig *m);
-extern void v_bignum_reduce(VBigDig *x, const VBigDig *m, const VBigDig *mu);
-extern void v_bignum_reduce_end(const VBigDig *mu);
-
-/* Compute x *= x, assuming x only uses half of its actual size. */
-extern void v_bignum_square_half(VBigDig *x);
-
-/* Compute pow(x, y, n) == (x raised to the y:th power) modulo n. */
-extern void v_bignum_pow_mod(VBigDig *x, const VBigDig *y, const VBigDig *n);
diff --git a/extern/verse/dist/v_cmd_buf.c b/extern/verse/dist/v_cmd_buf.c
deleted file mode 100644
index b7faf227352..00000000000
--- a/extern/verse/dist/v_cmd_buf.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "verse_header.h"
-#include "v_pack.h"
-#include "v_cmd_buf.h"
-
-static const size_t vcmdbuf_chunk_size[] = { 10000, 10000, 10000, 10000, 8000, 5000, 500 }; /* If you think memory is cheap, set this to a high value. */
-
-/* Sizes of individual command buffers, indexable by VCMDBufSize values. Switch-killer. */
-static const size_t vcmdbuf_size[] = {
- sizeof (VCMDBuffer10), sizeof (VCMDBuffer20), sizeof (VCMDBuffer30), sizeof (VCMDBuffer80),
- sizeof (VCMDBuffer160), sizeof (VCMDBuffer320), sizeof (VCMDBuffer1500)
-};
-
-#define VCMDBUF_INIT_CHUNK_FACTOR 0.5
-
-static struct {
- VCMDBufHead *buffers[VCMDBS_COUNT];
- unsigned int available[VCMDBS_COUNT];
-} VCMDBufData;
-
-static boolean v_cmd_buf_initialized = FALSE;
-
-void cmd_buf_init(void)
-{
- unsigned int i, j;
- VCMDBufHead *buf, *b;
-
- for(i = 0; i < VCMDBS_COUNT; i++)
- {
- VCMDBufData.buffers[i] = NULL;
- VCMDBufData.available[i] = (unsigned int) (vcmdbuf_chunk_size[i] * VCMDBUF_INIT_CHUNK_FACTOR);
- for(j = 0, buf = NULL; j < VCMDBufData.available[i]; j++, buf = b)
- {
- b = v_cmd_buf_allocate(i);
- b->next = buf;
- }
- VCMDBufData.buffers[i] = buf;
- }
- v_cmd_buf_initialized = TRUE;
-}
-
-VCMDBufHead * v_cmd_buf_allocate(VCMDBufSize buf_size)
-{
- VCMDBufHead *output = NULL;
-
- if(VCMDBufData.buffers[buf_size] != NULL)
- {
- output = VCMDBufData.buffers[buf_size];
- VCMDBufData.buffers[buf_size] = output->next;
- VCMDBufData.available[buf_size]--;
- }
- else
- {
- if(buf_size < sizeof vcmdbuf_size / sizeof *vcmdbuf_size)
- output = malloc(vcmdbuf_size[buf_size]);
- else
- {
- fprintf(stderr, "v_cmd_buf.c: Can't handle buffer size %d\n", buf_size);
- return NULL;
- }
- output->buf_size = buf_size;
- }
- output->next = NULL;
- output->packet = 0;
- output->size = 0;
- output->address_size = -1;
- return output;
-}
-
-void v_cmd_buf_free(VCMDBufHead *head)
-{
- if(VCMDBufData.available[head->buf_size] < vcmdbuf_chunk_size[head->buf_size])
- {
- head->next = VCMDBufData.buffers[head->buf_size];
- VCMDBufData.buffers[head->buf_size] = head;
- VCMDBufData.available[head->buf_size]++;
- }
- else
- free(head);
-}
-
-void v_cmd_buf_set_size(VCMDBufHead *head, unsigned int size)
-{
- head->size = size;
-}
-
-void v_cmd_buf_set_address_size(VCMDBufHead *head, unsigned int size)
-{
- unsigned int i;
-
- head->address_size = size;
- head->address_sum = 0;
- for(i = 1; i < size + 1; i++)
- head->address_sum += i * i * (uint32)(((VCMDBuffer1500 *)head)->buf[i - 1]);
-}
-
-void v_cmd_buf_set_unique_address_size(VCMDBufHead *head, unsigned int size)
-{
- static unsigned int i = 0;
-
- head->address_size = size;
- head->address_sum = i++;
-}
-
-boolean v_cmd_buf_compare(VCMDBufHead *a, VCMDBufHead *b)
-{
- if(a->address_sum != b->address_sum)
- return FALSE;
- if(a->address_size != b->address_size)
- return FALSE;
- return memcmp(((VCMDBuffer1500 *)a)->buf, ((VCMDBuffer1500 *)b)->buf, a->address_size) == 0;
-}
diff --git a/extern/verse/dist/v_cmd_buf.h b/extern/verse/dist/v_cmd_buf.h
deleted file mode 100644
index 6eda7640bb1..00000000000
--- a/extern/verse/dist/v_cmd_buf.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-**
-*/
-
-#include <stdlib.h>
-
-#include "verse_header.h"
-#include "v_pack.h"
-
-#define V_NOQ_MAX_PACKET_SIZE 1500
-
-typedef enum {
- VCMDBS_10 = 0,
- VCMDBS_20 = 1,
- VCMDBS_30 = 2,
- VCMDBS_80 = 3,
- VCMDBS_160 = 4,
- VCMDBS_320 = 5,
- VCMDBS_1500 = 6,
- VCMDBS_COUNT = 7
-} VCMDBufSize;
-
-typedef struct {
- void *next;
- uint32 packet;
- unsigned int address_size;
- unsigned int address_sum;
- VCMDBufSize buf_size;
- unsigned int size;
-} VCMDBufHead;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[10];
-} VCMDBuffer10;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[20];
-} VCMDBuffer20;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[30];
-} VCMDBuffer30;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[80];
-} VCMDBuffer80;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[160];
-} VCMDBuffer160;
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[320];
-} VCMDBuffer320;
-
-
-typedef struct {
- VCMDBufHead head;
- uint8 buf[1500];
-} VCMDBuffer1500;
-
-extern VCMDBufHead *v_cmd_buf_allocate(VCMDBufSize buf_size);
-extern void v_cmd_buf_free(VCMDBufHead *head);
-
-extern void v_cmd_buf_set_size(VCMDBufHead *head, unsigned int size);
-extern void v_cmd_buf_set_address_size(VCMDBufHead *head, unsigned int size);
-extern void v_cmd_buf_set_unique_address_size(VCMDBufHead *head, unsigned int size);
-extern boolean v_cmd_buf_compare(VCMDBufHead *a, VCMDBufHead *b);
diff --git a/extern/verse/dist/v_cmd_def_a.c b/extern/verse/dist/v_cmd_def_a.c
deleted file mode 100644
index 8557601428b..00000000000
--- a/extern/verse/dist/v_cmd_def_a.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Command definitions for audio node commands.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_audio_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_AUDIO, "a_buffer_create", 160, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_BUFFER_ID, "buffer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_add_param(VCGP_ENUM_NAME, "VNABlockType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_REAL64, "frequency");
- v_cg_alias(FALSE, "a_buffer_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_AUDIO, "a_buffer_subscribe", 161, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_BUFFER_ID, "layer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "a_buffer_unsubscribe", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_AUDIO, "a_block_set", 162, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "buffer_id");
- v_cg_add_param(VCGP_UINT32, "block_index");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_ENUM_NAME, "VNABlockType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNABlock");
- v_cg_add_param(VCGP_POINTER, "samples");
-
- v_cg_add_param(VCGP_PACK_INLINE, "\tbuffer_pos += vnp_pack_audio_block(&buf[buffer_pos], type, samples);\n");
-
- v_cg_add_param(VCGP_UNPACK_INLINE, "\tif(type <= VN_A_BLOCK_REAL64)\n\t{\n"
- "\t\tVNABlock\tblock;\n"
- "\t\tbuffer_pos += vnp_unpack_audio_block(&buf[buffer_pos], type, &block);\n"
- "\t\tif(func_a_block_set != NULL)\n"
- "\t\t\tfunc_a_block_set(v_fs_get_user_data(162), node_id, buffer_id, block_index, (VNABlockType) type, &block);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_alias(FALSE, "a_block_clear", "if(type > VN_A_BLOCK_REAL64)", 3, NULL);
- v_cg_end_cmd();
-
-
- v_cg_new_cmd(V_NT_AUDIO, "a_stream_create", 163, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "stream_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_alias(FALSE, "a_stream_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_AUDIO, "a_stream_subscribe", 164, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "stream_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "a_stream_unsubscribe", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_AUDIO, "a_stream", 165, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "stream_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_ENUM_NAME, "VNABlockType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_REAL64, "frequency");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNABlock");
- v_cg_add_param(VCGP_POINTER, "samples");
-
- v_cg_add_param(VCGP_PACK_INLINE, "\tbuffer_pos += vnp_pack_audio_block(&buf[buffer_pos], type, samples);\n");
-
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n\t\tVNABlock\tblock;\n\tbuffer_pos += vnp_unpack_audio_block(&buf[buffer_pos], type, &block);\n"
- "\t\tif(func_a_stream != NULL)\n"
- "\t\t\tfunc_a_stream(v_fs_get_user_data(165), node_id, stream_id, time_s, time_f, (VNABlockType) type, frequency, &block);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
-
- v_cg_end_cmd();
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_b.c b/extern/verse/dist/v_cmd_def_b.c
deleted file mode 100644
index b266b03648c..00000000000
--- a/extern/verse/dist/v_cmd_def_b.c
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_bitmap_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_BITMAP, "b_dimensions_set", 80, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT16, "width");
- v_cg_add_param(VCGP_UINT16, "height");
- v_cg_add_param(VCGP_UINT16, "depth");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_BITMAP, "b_layer_create", 81, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_add_param(VCGP_ENUM_NAME, "VNBLayerType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_alias(FALSE, "b_layer_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_BITMAP, "b_layer_subscribe", 82, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT8, "level");
- v_cg_alias(FALSE, "b_layer_unsubscribe", "if(level == 255)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_manual_cmd(83, "b_tile_set", "void verse_send_b_tile_set(VNodeID node_id, VLayerID layer_id, "
- "uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile)",
- NULL, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_c.c b/extern/verse/dist/v_cmd_def_c.c
deleted file mode 100644
index 317b45e1a27..00000000000
--- a/extern/verse/dist/v_cmd_def_c.c
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_curve_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_CURVE, "c_curve_create", 128, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "curve_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_add_param(VCGP_UINT8, "dimensions");
- v_cg_alias(FALSE, "c_curve_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_CURVE, "c_curve_subscribe", 129, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "curve_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "c_curve_unsubscribe", "if(!alias_bool)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_manual_cmd(130, "c_key_set", "void verse_send_c_key_set(VNodeID node_id, VLayerID curve_id, "
- "uint32 key_id, uint8 dimensions, const real64 *pre_value, const uint32 *pre_pos, "
- "const real64 *value, real64 pos, const real64 *post_value, const uint32 *post_pos)",
- "c_key_destroy", "void verse_send_c_key_destroy(VNodeID node_id, VLayerID curve_id, "
- "uint32 key_id)");
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_g.c b/extern/verse/dist/v_cmd_def_g.c
deleted file mode 100644
index 5a4ea7202b4..00000000000
--- a/extern/verse/dist/v_cmd_def_g.c
+++ /dev/null
@@ -1,183 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_geometry_cmd_def(void)
-{
- unsigned int order[] = { 0, 2 };
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_layer_create", 48, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_add_param(VCGP_ENUM_NAME, "VNGLayerType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_UINT32, "def_uint");
- v_cg_add_param(VCGP_REAL64, "def_real");
- v_cg_alias(FALSE, "g_layer_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_layer_subscribe", 49, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_ENUM_NAME, "VNRealFormat");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_alias(FALSE, "g_layer_unsubscribe", "if(type > VN_FORMAT_REAL64)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_set_xyz_real32", 50, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL32, "x");
- v_cg_add_param(VCGP_REAL32, "y");
- v_cg_add_param(VCGP_REAL32, "z");
- v_cg_alias(FALSE, "g_vertex_delete_real32", "if(x == V_REAL32_MAX || y == V_REAL32_MAX || z == V_REAL32_MAX)", 2, order);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_set_xyz_real64", 51, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "x");
- v_cg_add_param(VCGP_REAL64, "y");
- v_cg_add_param(VCGP_REAL64, "z");
- v_cg_alias(FALSE, "g_vertex_delete_real64", "if(x == V_REAL64_MAX || y == V_REAL64_MAX || z == V_REAL64_MAX)", 2, order);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_set_uint32", 52, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_set_real64", 53, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_set_real32", 54, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL32, "value");
- v_cg_end_cmd();
-/*
- v_cg_new_cmd(V_NT_GEOMETRY, "g_vertex_delete", VCGCT_NORMAL);
- v_cg_add_param(VCGP_UINT32, "vertex_id");
- v_cg_end_cmd();
-*/
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_corner_uint32", 55, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "v0");
- v_cg_add_param(VCGP_UINT32, "v1");
- v_cg_add_param(VCGP_UINT32, "v2");
- v_cg_add_param(VCGP_UINT32, "v3");
- v_cg_alias(FALSE, "g_polygon_delete", "if(layer_id == 1 && v0 == ~0u)", 2, order);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_corner_real64", 56, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "v0");
- v_cg_add_param(VCGP_REAL64, "v1");
- v_cg_add_param(VCGP_REAL64, "v2");
- v_cg_add_param(VCGP_REAL64, "v3");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_corner_real32", 57, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL32, "v0");
- v_cg_add_param(VCGP_REAL32, "v1");
- v_cg_add_param(VCGP_REAL32, "v2");
- v_cg_add_param(VCGP_REAL32, "v3");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_face_uint8", 58, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT8, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_face_uint32", 59, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_face_real64", 60, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_polygon_set_face_real32", 61, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_LAYER_ID, "layer_id");
- v_cg_add_param(VCGP_UINT32, "polygon_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL32, "value");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_crease_set_vertex", 62, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "layer");
- v_cg_add_param(VCGP_UINT32, "def_crease");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_crease_set_edge", 63, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "layer");
- v_cg_add_param(VCGP_UINT32, "def_crease");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_GEOMETRY, "g_bone_create", 64, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "bone_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "weight");
- v_cg_add_param(VCGP_NAME, "reference");
- v_cg_add_param(VCGP_UINT16, "parent");
- v_cg_add_param(VCGP_REAL64, "pos_x");
- v_cg_add_param(VCGP_REAL64, "pos_y");
- v_cg_add_param(VCGP_REAL64, "pos_z");
- v_cg_add_param(VCGP_NAME, "position_label");
- v_cg_add_param(VCGP_NAME, "rotation_label");
- v_cg_add_param(VCGP_NAME, "scale_label");
- v_cg_alias(FALSE, "g_bone_destroy", "if(weight[0] == 0)", 2, NULL);
-
- v_cg_end_cmd();
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_m.c b/extern/verse/dist/v_cmd_def_m.c
deleted file mode 100644
index 3f4b9aa7178..00000000000
--- a/extern/verse/dist/v_cmd_def_m.c
+++ /dev/null
@@ -1,273 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_material_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_MATERIAL, "m_fragment_create", 68, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_FRAGMENT_ID, "frag_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_ENUM_NAME, "VNMFragmentType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_POINTER_TYPE, "VMatFrag");
- v_cg_add_param(VCGP_POINTER, "fragment");
-
- v_cg_add_param(VCGP_PACK_INLINE, "\tswitch(type)\n"
- "\t{\n"
- "\tcase VN_M_FT_COLOR :\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.red);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.green);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.blue);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_LIGHT :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->light.type);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->light.normal_falloff);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], fragment->light.brdf);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_r, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_g, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_b, 16);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_REFLECTION :\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->reflection.normal_falloff);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_TRANSPARENCY :\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->transparency.normal_falloff);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->transparency.refraction_index);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_GEOMETRY :\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_r, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_g, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_b, 16);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_VOLUME :\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.diffusion);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_r);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_g);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_b);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_VIEW :\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_TEXTURE :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], fragment->texture.bitmap);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_r, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_g, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_b, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->texture.filtered);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->texture.mapping);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_NOISE :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->noise.type);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->noise.mapping);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_BLENDER :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->blender.type);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.data_a);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.data_b);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.control);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_CLAMP :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->clamp.min);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.red);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.green);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.blue);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->clamp.data);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_MATRIX :\n"
- "\t\t{\n"
- "\t\t\tunsigned int i;\n"
- "\t\t\tfor(i = 0; i < 16; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->matrix.matrix[i]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->matrix.data);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_RAMP :\n"
- "\t\tif(fragment->ramp.point_count == 0)\n"
- "\t\t\treturn;\n"
- "\t\t{\n"
- "\t\t\tunsigned int i, pos;\n"
- "\t\t\tdouble last;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->ramp.type);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->ramp.channel);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->ramp.mapping);\n"
- "\t\t\tpos = buffer_pos;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], fragment->ramp.point_count);\n"
- "\t\t\tlast = fragment->ramp.ramp[0].pos - 1;\n"
- "\t\t\tfor(i = 0; i < fragment->ramp.point_count && fragment->ramp.ramp[i].pos > last && i < 48; i++)\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].pos);\n"
- "\t\t\t\tlast = fragment->ramp.ramp[i].pos;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].red);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].green);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].blue);\n"
- "\t\t\t}\n\t\t\tif(i != fragment->ramp.point_count)\n"
- "\t\t\t\tvnp_raw_pack_uint8(&buf[pos], i);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_ANIMATION :\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->animation.label, 16);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_ALTERNATIVE :\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->alternative.alt_a);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->alternative.alt_b);\n"
- "\t\tbreak;\n"
- "\tcase VN_M_FT_OUTPUT :\n"
- "\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->output.label, 16);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->output.front);\n"
- "\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->output.back);\n"
- "\t\tbreak;\n"
- "\t}\n");
-
- v_cg_add_param(VCGP_UNPACK_INLINE, "\tif(type <= VN_M_FT_OUTPUT)\n"
- "\t{\n"
- "\t\tVMatFrag frag;\n"
- "\t\tuint8 temp;\n"
- "\t\tswitch(type)\n"
- "\t\t{\n"
- "\t\tcase VN_M_FT_COLOR :\n"
- "\t\t\tif(buffer_pos + 3 * 8 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.red);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.green);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.blue);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_LIGHT :\n"
- "\t\t\tif(buffer_pos + 13 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\tfrag.light.type = (VNMLightType)temp;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.light.normal_falloff);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &frag.light.brdf);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_r, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_g, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_b, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_REFLECTION :\n"
- "\t\t\tif(buffer_pos + 8 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.reflection.normal_falloff);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_TRANSPARENCY :\n"
- "\t\t\tif(buffer_pos + 16 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.transparency.normal_falloff);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.transparency.refraction_index);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_VOLUME :\n"
- "\t\t\tif(buffer_pos + 32 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.diffusion);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_r);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_g);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_b);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_VIEW :\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_GEOMETRY :\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_r, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_g, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_b, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_TEXTURE :\n"
- "\t\t\tif(buffer_pos + 10 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &frag.texture.bitmap);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_r, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_g, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_b, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\tfrag.texture.filtered = (VNMNoiseType)temp;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.texture.mapping);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_NOISE :\n"
- "\t\t\tif(buffer_pos + 3 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\tfrag.noise.type = (VNMNoiseType)temp;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.noise.mapping);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_BLENDER :\n"
- "\t\t\tif(buffer_pos + 7 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\tfrag.blender.type = (VNMBlendType)temp;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.data_a);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.data_b);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.control);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_CLAMP :\n"
- "\t\t\tif(buffer_pos + 27 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\tfrag.clamp.min = (VNMBlendType)temp;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.red);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.green);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.blue);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.clamp.data);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_MATRIX :\n"
- "\t\t\tif(buffer_pos + 8 * 16 + 2 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\telse\n"
- "\t\t\t{\n"
- "\t\t\t\tunsigned int i;\n"
- "\t\t\t\tfor(i = 0; i < 16; i++)\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.matrix.matrix[i]);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.matrix.data);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_RAMP :\n"
- "\t\t\tif(buffer_pos + 5 + 4 * 8 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\telse\n"
- "\t\t\t{\n"
- "\t\t\t\tunsigned int i, pos;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\t\tfrag.ramp.type = (VNMRampType)temp;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);\n"
- "\t\t\t\tfrag.ramp.channel = (VNMRampChannel)temp;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.ramp.mapping);\n"
- "\t\t\t\tpos = buffer_pos;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &frag.ramp.point_count);\n"
- "\t\t\t\tfor(i = 0; i < frag.ramp.point_count && buffer_pos + 8 * 4 <= buffer_length && i < 48; i++)\n"
- "\t\t\t\t{\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].pos);\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].red);\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].green);\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].blue);\n"
- "\t\t\t\t}if(i != frag.ramp.point_count)\n"
- "\t\t\t\t\tfrag.ramp.point_count = i;\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_ANIMATION :\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.animation.label, 16, buffer_length - buffer_pos);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_ALTERNATIVE :\n"
- "\t\t\tif(buffer_pos + 4 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.alternative.alt_a);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.alternative.alt_b);\n"
- "\t\t\tbreak;\n"
- "\t\tcase VN_M_FT_OUTPUT :\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.output.label, 16, buffer_length - buffer_pos);\n"
- "\t\t\tif(buffer_pos + 4 > buffer_length)\n"
- "\t\t\t\treturn -1;\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.output.front);\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.output.back);\n"
- "\t\t\tbreak;\n"
- "\t\t}\n"
- "\t\tif(func_m_fragment_create != NULL)\n"
- "\t\t\tfunc_m_fragment_create(v_fs_get_user_data(68), node_id, frag_id, type, &frag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_alias(FALSE, "m_fragment_destroy", "if(type > VN_M_FT_OUTPUT)", 2, NULL);
-
- v_cg_end_cmd();
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_o.c b/extern/verse/dist/v_cmd_def_o.c
deleted file mode 100644
index a0135f2a4a7..00000000000
--- a/extern/verse/dist/v_cmd_def_o.c
+++ /dev/null
@@ -1,517 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_object_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_pos_real32", 32, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_POINTER_TYPE,"real32");
- v_cg_add_param(VCGP_POINTER, "pos");
- v_cg_add_param(VCGP_POINTER_TYPE,"real32");
- v_cg_add_param(VCGP_POINTER, "speed");
- v_cg_add_param(VCGP_POINTER_TYPE,"real32");
- v_cg_add_param(VCGP_POINTER, "accelerate");
- v_cg_add_param(VCGP_POINTER_TYPE,"real32");
- v_cg_add_param(VCGP_POINTER, "drag_normal");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tunsigned char mask = 0;\n"
- "\t\tunsigned int cmd;\n"
- "\t\tcmd = buffer_pos++;\n"
- "\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[0]);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[1]);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[2]);\n"
- "\t\tif(speed != NULL && (speed[0] > 0.0000001 || speed[0] < -0.0000001 || speed[1] > 0.0000001 || speed[1] < -0.0000001 || speed[2] > 0.0000001 || speed[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 1;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[2]);\n"
- "\t\t}\n"
- "\t\tif(accelerate != NULL && (accelerate[0] > 0.0000001 || accelerate[0] < -0.0000001 || accelerate[1] > 0.0000001 || accelerate[1] < -0.0000001 || accelerate[2] > 0.0000001 || accelerate[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 2;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[2]);\n"
- "\t\t}\n"
- "\t\tif(drag_normal != NULL && (drag > 0.0000001 || drag < -0.0000001) && (drag_normal[0] > 0.0000001 || drag_normal[0] < -0.0000001 || drag_normal[1] > 0.0000001 || drag_normal[1] < -0.0000001 || drag_normal[2] > 0.0000001 || drag_normal[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 4;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[2]);\n"
- "\t\t}\n"
- "\t\tif(drag > 0.0000001 || drag < -0.0000001)\n"
- "\t\t{\n"
- "\t\t\tmask |= 8;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);\n"
- "\t\t}\n"
- "\t\tvnp_raw_pack_uint8(&buf[cmd], mask);\n"
- "\t}if(FALSE)\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tfloat output[4][3];\n"
- "\t\tunsigned int i, j;\n"
- "\t\tchar mask, pow = 1;\n"
- "\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);\n"
- "\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &output[0][j]);\n"
- "\t\tfor(i = 1; i < 4; i++)\n"
- "\t\t{\n"
- "\t\t\tif((mask & pow) != 0)\n"
- "\t\t\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &output[i][j]);\n"
- "\t\t\telse\n"
- "\t\t\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\t\t\toutput[i][j] = 0;\n"
- "\t\t\tpow *= 2;\n"
- "\t\t}\n"
- "\t\tif((mask & pow) != 0)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &drag);\n"
- "\t\telse\n"
- "\t\t\tdrag = 0.0f;\n"
- "\t\tif(func_o_transform_pos_real32 != NULL)\n"
- "\t\t\tfunc_o_transform_pos_real32(v_fs_get_user_data(32), node_id, time_s, time_f, &output[0][0], &output[1][0], &output[2][0], &output[3][0], drag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_add_param(VCGP_REAL32, "drag");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_rot_real32", 33, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNQuat32");
- v_cg_add_param(VCGP_POINTER, "rot");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNQuat32");
- v_cg_add_param(VCGP_POINTER, "speed");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNQuat32");
- v_cg_add_param(VCGP_POINTER, "accelerate");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNQuat32");
- v_cg_add_param(VCGP_POINTER, "drag_normal");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tuint8 mask = 0;\n"
- "\t\tunsigned int maskpos;\n"
- "\t\tmaskpos = buffer_pos++;\t\t/* Remember location, and reserve a byte for the mask. */\n"
- "\t\tbuffer_pos += vnp_pack_quat32(&buf[buffer_pos], rot);\n"
- "\t\tif(v_quat32_valid(speed))\n"
- "\t\t{\n"
- "\t\t\tmask |= 1;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat32(&buf[buffer_pos], speed);\n"
- "\t\t}\n"
- "\t\tif(v_quat32_valid(accelerate))\n"
- "\t\t{\n"
- "\t\t\tmask |= 2;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat32(&buf[buffer_pos], accelerate);\n"
- "\t\t}\n"
- "\t\tif(v_quat32_valid(drag_normal))\n"
- "\t\t{\n"
- "\t\t\tmask |= 4;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat32(&buf[buffer_pos], drag_normal);\n"
- "\t\t}\n"
- "\t\tif(drag > 0.0000001 || drag < -0.0000001)\n"
- "\t\t{\n"
- "\t\t\tmask |= 8;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);\n"
- "\t\t}\n"
- "\t\tvnp_raw_pack_uint8(&buf[maskpos], mask);\t/* Write the mask into start of command. */\n"
- "\t}\n"
- "\tif(FALSE)\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tVNQuat32 trot, temp[3], *q[3];\n"
- "\t\tunsigned int i;\n"
- "\t\tuint8 mask, test;\n"
- "\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);\n"
- "\t\tbuffer_pos += vnp_unpack_quat32(&buf[buffer_pos], &trot);\n"
- "\t\tfor(i = 0, test = 1; i < sizeof temp / sizeof *temp; i++, test <<= 1)\n"
- "\t\t{\n"
- "\t\t\tif(mask & test)\t\t/* Field present? */\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_unpack_quat32(&buf[buffer_pos], &temp[i]);\n"
- "\t\t\t\tq[i] = &temp[i];\n"
- "\t\t\t}\n"
- "\t\t\telse\n"
- "\t\t\t\tq[i] = NULL;\n"
- "\t\t}\n"
- "\t\tif(mask & test)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &drag);\n"
- "\t\telse\n"
- "\t\t\tdrag = 0.0;\n"
- "\t\tif(func_o_transform_rot_real32 != NULL)\n"
- "\t\t\tfunc_o_transform_rot_real32(v_fs_get_user_data(33), node_id, time_s, time_f, &trot, q[0], q[1], q[2], drag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_add_param(VCGP_REAL32, "drag");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_scale_real32", 34, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL32, "scale_x");
- v_cg_add_param(VCGP_REAL32, "scale_y");
- v_cg_add_param(VCGP_REAL32, "scale_z");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_pos_real64", 35, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_POINTER_TYPE,"real64");
- v_cg_add_param(VCGP_POINTER, "pos");
- v_cg_add_param(VCGP_POINTER_TYPE,"real64");
- v_cg_add_param(VCGP_POINTER, "speed");
- v_cg_add_param(VCGP_POINTER_TYPE,"real64");
- v_cg_add_param(VCGP_POINTER, "accelerate");
- v_cg_add_param(VCGP_POINTER_TYPE,"real64");
- v_cg_add_param(VCGP_POINTER, "drag_normal");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tunsigned char mask = 0;\n"
- "\t\tunsigned int cmd;\n"
- "\t\tcmd = buffer_pos++;\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[0]);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[1]);\n"
- "\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[2]);\n"
- "\t\tif(speed != NULL && (speed[0] > 0.0000001 || speed[0] < -0.0000001 || speed[1] > 0.0000001 || speed[1] < -0.0000001 || speed[2] > 0.0000001 || speed[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 1;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[2]);\n"
- "\t\t}\n"
- "\t\tif(accelerate != NULL && (accelerate[0] > 0.0000001 || accelerate[0] < -0.0000001 || accelerate[1] > 0.0000001 || accelerate[1] < -0.0000001 || accelerate[2] > 0.0000001 || accelerate[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 2;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[2]);\n"
- "\t\t}\n"
- "\t\tif(drag_normal != NULL && (drag > 0.0000001 || drag < -0.0000001) && (drag_normal[0] > 0.0000001 || drag_normal[0] < -0.0000001 || drag_normal[1] > 0.0000001 || drag_normal[1] < -0.0000001 || drag_normal[2] > 0.0000001 || drag_normal[2] < -0.0000001))\n"
- "\t\t{\n"
- "\t\t\tmask |= 4;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[2]);\n"
- "\t\t}\n"
- "\t\tif(drag > 0.0000001 || drag < -0.0000001)\n"
- "\t\t{\n"
- "\t\t\tmask |= 8;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);\n"
- "\t\t}\n"
- "\t\tvnp_raw_pack_uint8(&buf[cmd], mask);\n"
- "\t}if(FALSE)\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tdouble output[4][3];\n"
- "\t\tunsigned int i, j;\n"
- "\t\tchar mask, pow = 1;\n"
- "\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);\n"
- "\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[0][j]);\n"
- "\t\tfor(i = 1; i < 4; i++)\n"
- "\t\t{\n"
- "\t\t\tif((mask & pow) != 0)\n"
- "\t\t\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[i][j]);\n"
- "\t\t\telse\n"
- "\t\t\t\tfor(j = 0; j < 3; j++)\n"
- "\t\t\t\t\toutput[i][j] = 0;\n"
- "\t\t\tpow *= 2;\n"
- "\t\t}\n"
- "\t\tif((mask & pow) != 0)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &drag);\n"
- "\t\telse\n"
- "\t\t\tdrag = 0.0;\n"
- "\t\tif(func_o_transform_pos_real64 != NULL)\n"
- "\t\t\tfunc_o_transform_pos_real64(v_fs_get_user_data(35), node_id, time_s, time_f, &output[0][0], &output[1][0], &output[2][0], &output[3][0], drag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_add_param(VCGP_REAL64, "drag");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_rot_real64", 36, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_POINTER_TYPE,"VNQuat64");
- v_cg_add_param(VCGP_POINTER, "rot");
- v_cg_add_param(VCGP_POINTER_TYPE,"VNQuat64");
- v_cg_add_param(VCGP_POINTER, "speed");
- v_cg_add_param(VCGP_POINTER_TYPE,"VNQuat64");
- v_cg_add_param(VCGP_POINTER, "accelerate");
- v_cg_add_param(VCGP_POINTER_TYPE,"VNQuat64");
- v_cg_add_param(VCGP_POINTER, "drag_normal");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tuint8 mask = 0;\n"
- "\t\tunsigned int maskpos;\n"
- "\t\tmaskpos = buffer_pos++;\t\t/* Remember location, and reserve a byte for the mask. */\n"
- "\t\tbuffer_pos += vnp_pack_quat64(&buf[buffer_pos], rot);\n"
- "\t\tif(v_quat64_valid(speed))\n"
- "\t\t{\n"
- "\t\t\tmask |= 1;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat64(&buf[buffer_pos], speed);\n"
- "\t\t}\n"
- "\t\tif(v_quat64_valid(accelerate))\n"
- "\t\t{\n"
- "\t\t\tmask |= 2;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat64(&buf[buffer_pos], accelerate);\n"
- "\t\t}\n"
- "\t\tif(v_quat64_valid(drag_normal))\n"
- "\t\t{\n"
- "\t\t\tmask |= 4;\n"
- "\t\t\tbuffer_pos += vnp_pack_quat64(&buf[buffer_pos], drag_normal);\n"
- "\t\t}\n"
- "\t\tif(drag > 0.0000001 || drag < -0.0000001)\n"
- "\t\t{\n"
- "\t\t\tmask |= 8;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);\n"
- "\t\t}\n"
- "\t\tvnp_raw_pack_uint8(&buf[maskpos], mask);\t/* Write the mask into start of command. */\n"
- "\t}\n"
- "\tif(FALSE)\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tVNQuat64 trot, temp[3], *q[3];\n"
- "\t\tunsigned int i;\n"
- "\t\tuint8 mask, test;\n"
- "\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);\n"
- "\t\tbuffer_pos += vnp_unpack_quat64(&buf[buffer_pos], &trot);\n"
- "\t\tfor(i = 0, test = 1; i < sizeof temp / sizeof *temp; i++, test <<= 1)\n"
- "\t\t{\n"
- "\t\t\tif(mask & test)\t\t/* Field present? */\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_unpack_quat64(&buf[buffer_pos], &temp[i]);\n"
- "\t\t\t\tq[i] = &temp[i];\n"
- "\t\t\t}\n"
- "\t\t\telse\n"
- "\t\t\t\tq[i] = NULL;\n"
- "\t\t}\n"
- "\t\tif(mask & test)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &drag);\n"
- "\t\telse\n"
- "\t\t\tdrag = 0.0;\n"
- "\t\tif(func_o_transform_rot_real64 != NULL)\n"
- "\t\t\tfunc_o_transform_rot_real64(v_fs_get_user_data(36), node_id, time_s, time_f, &trot, q[0], q[1], q[2], drag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_add_param(VCGP_REAL64, "drag");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_scale_real64", 37, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "scale_x");
- v_cg_add_param(VCGP_REAL64, "scale_y");
- v_cg_add_param(VCGP_REAL64, "scale_z");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_transform_subscribe", 38, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_ENUM_NAME, "VNRealFormat");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_alias(TRUE, "o_transform_unsubscribe", NULL, 4, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_light_set", 39, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_REAL64, "light_r");
- v_cg_add_param(VCGP_REAL64, "light_g");
- v_cg_add_param(VCGP_REAL64, "light_b");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_link_set", 40, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "link_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NODE_ID, "link");
- v_cg_add_param(VCGP_NAME, "label");
- v_cg_add_param(VCGP_UINT32, "target_id");
- v_cg_alias(TRUE, "o_link_destroy", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_method_group_create", 41, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_alias(FALSE, "o_method_group_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_method_group_subscribe", 42, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "o_method_group_unsubscribe", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_method_create", 43, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_UINT16, "method_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_LONG_NAME, "name");
- v_cg_add_param(VCGP_UINT8, "param_count");
- v_cg_add_param(VCGP_POINTER_TYPE,"VNOParamType");
- v_cg_add_param(VCGP_POINTER, "param_types");
- v_cg_add_param(VCGP_POINTER_TYPE,"char *");
- v_cg_add_param(VCGP_POINTER, "param_names");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tunsigned int i, j, sum = 1;\n"
- "\t\tfor(i = 0; i < param_count; i++)\n"
- "\t\t{\n"
- "\t\t\tsum += 3;\n"
- "\t\t\tfor(j = 0; param_names[i][j] != 0; j++);\n"
- "\t\t}\n"
- "\t\tif(sum + buffer_pos > 1500)\n"
- "\t\t\treturn;\n"
- "\t\tfor(i = 0; i < param_count; i++)\n"
- "\t\t{\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], param_types[i]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], param_names[i], 1500 - buffer_pos);\n"
- "\t\t}\n"
- "\t}\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\tif(param_count != 255)\n"
- "\t{\n"
- "\t\tunsigned int i, size, text = 0;\n"
- "\t\tVNOParamType types[256];\n"
- "\t\tuint8 t;\n"
- "\t\tchar name_buf[1500], *names[256];\n"
- "\t\tfor(i = 0; i < param_count; i++)\n"
- "\t\t{\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &t);\n"
- "\t\t\ttypes[i] = t;\n"
- "\t\t\tnames[i] = &name_buf[text];\n"
- "\t\t\tsize = vnp_raw_unpack_string(&buf[buffer_pos], names[i], 1500 - buffer_pos, buffer_length - buffer_pos);\n"
- "\t\t\tbuffer_pos += size;\n"
- "\t\t\ttext += size;\n"
- "\t\t}\n"
- "\t\tif(func_o_method_create != NULL)\n"
- "\t\t\tfunc_o_method_create(v_fs_get_user_data(43), node_id, group_id, method_id, name, param_count, types, (const char **) names);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_alias(FALSE, "o_method_destroy", "if(name[0] == 0)", 3, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_method_call", 44, VCGCT_UNIQUE);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_UINT16, "method_id");
- v_cg_add_param(VCGP_NODE_ID, "sender");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNOPackedParams");
- v_cg_add_param(VCGP_POINTER, "params");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tunsigned int i;\n"
- "\t\tuint16 size;\n"
- "\t\tvnp_raw_unpack_uint16(params, &size);\n"
- "\t\tfor(i = 0; i < size; i++)\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((uint8 *)params)[i]);\n"
- "\t\tfree((void *) params);\t/* Drop the const. */\n"
- "\t}\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tunsigned int i;\n"
- "\t\tuint8 par[1500];\n"
- "\t\tuint16 size;\n"
- "\t\tvnp_raw_unpack_uint16(&buf[buffer_pos], &size);\n"
- "\t\tfor(i = 0; i < size; i++)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &par[i]);\n"
- "\t\tif(func_o_method_call != NULL)\n"
- "\t\t\tfunc_o_method_call(v_fs_get_user_data(44), node_id, group_id, method_id, sender, par);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
-
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_anim_run", 45, VCGCT_UNIQUE);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "link_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT32, "time_s");
- v_cg_add_param(VCGP_UINT32, "time_f");
- v_cg_add_param(VCGP_UINT8, "dimensions");
- v_cg_add_param(VCGP_POINTER_TYPE, "real64");
- v_cg_add_param(VCGP_POINTER, "pos");
- v_cg_add_param(VCGP_POINTER_TYPE, "real64");
- v_cg_add_param(VCGP_POINTER, "speed");
- v_cg_add_param(VCGP_POINTER_TYPE, "real64");
- v_cg_add_param(VCGP_POINTER, "accel");
- v_cg_add_param(VCGP_POINTER_TYPE, "real64");
- v_cg_add_param(VCGP_POINTER, "scale");
- v_cg_add_param(VCGP_POINTER_TYPE, "real64");
- v_cg_add_param(VCGP_POINTER, "scale_speed");
- v_cg_add_param(VCGP_PACK_INLINE, "\t{\n"
- "\t\tunsigned char mask = 0;\n"
- "\t\tunsigned int cmd, i;\n"
- "\t\tcmd = buffer_pos++;\n"
- "\t\tif(dimensions > 4)\n"
- "\t\t\tdimensions = 4;\n"
- "\t\tfor(i = 0; i < dimensions; i++)\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[i]);\n"
- "\t\tif(speed != NULL)\n"
- "\t\t{\n"
- "\t\t\tmask |= 1;\n"
- "\t\t\tfor(i = 0; i < dimensions; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[i]);\n"
- "\t\t}\n"
- "\t\tif(accel != NULL)\n"
- "\t\t{\n"
- "\t\t\tmask |= 2;\n"
- "\t\t\tfor(i = 0; i < dimensions; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accel[i]);\n"
- "\t\t}\n"
- "\t\tif(scale != NULL)\n"
- "\t\t{\n"
- "\t\t\tmask |= 3;\n"
- "\t\t\tfor(i = 0; i < dimensions; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale[i]);\n"
- "\t\t}\n"
- "\t\tif(scale_speed != NULL)\n"
- "\t\t{\n"
- "\t\t\tmask |= 4;\n"
- "\t\t\tfor(i = 0; i < dimensions; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale_speed[i]);\n"
- "\t\t}\n"
- "\t\tvnp_raw_pack_uint8(&buf[cmd], mask);\n"
- "\t}\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\t{\n"
- "\t\tdouble output[5][4];\n"
- "\t\tunsigned int i, j;\n"
- "\t\tchar mask, pow = 1;\n"
- "\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);\n"
- "\t\tif(dimensions > 4)\n"
- "\t\t\tdimensions = 4;\n"
- "\t\tfor(j = 0; j < dimensions; j++)\n"
- "\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[0][j]);\n"
- "\t\tfor(i = 1; i < 5; i++)\n"
- "\t\t{\n"
- "\t\t\tif((mask & pow) != 0)\n"
- "\t\t\t\tfor(j = 0; j < dimensions; j++)\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[i][j]);\n"
- "\t\t\telse\n"
- "\t\t\t\tfor(j = 0; j < dimensions; j++)\n"
- "\t\t\t\t\toutput[i][j] = 0;\n"
- "\t\t\tpow *= 2;\n"
- "\t\t}\n"
- "\t\tif(func_o_anim_run != NULL)\n"
- "\t\t\tfunc_o_anim_run(v_fs_get_user_data(45), node_id, link_id, time_s, time_f, dimensions, &output[0][0], &output[1][0], &output[2][0], &output[3][0], &output[4][0]);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_OBJECT, "o_hide", 46, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_UINT8, "hidden");
- v_cg_end_cmd();
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_s.c b/extern/verse/dist/v_cmd_def_s.c
deleted file mode 100644
index 1b8b69dcd6d..00000000000
--- a/extern/verse/dist/v_cmd_def_s.c
+++ /dev/null
@@ -1,211 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_system_cmd_def(void)
-{
- v_cg_new_manual_cmd(0, "connect", "VSession verse_send_connect(const char *name, const char *pass, const char *address, const uint8 *expected_host_id)", NULL, NULL);
-
- v_cg_new_manual_cmd(1, "connect_accept", "VSession verse_send_connect_accept(VNodeID avatar, const char *address, uint8 *host_id)", NULL, NULL);
-
- v_cg_new_manual_cmd(2, "connect_terminate", "void verse_send_connect_terminate(const char *address, const char *bye)", NULL, NULL);
-
- v_cg_new_manual_cmd(5, "ping", "void verse_send_ping(const char *address, const char *message)", NULL, NULL);
-
- v_cg_new_cmd(V_NT_SYSTEM, "error_message", 6, VCGCT_UNIQUE);
- v_cg_add_param(VCGP_LONG_NAME, "message");
-
- v_cg_new_cmd(V_NT_SYSTEM, "packet_ack", 7, VCGCT_INVISIBLE_SYSTEM);
- v_cg_add_param(VCGP_UINT32, "packet_id");
- v_cg_add_param(VCGP_PACK_INLINE, "\tv_cmd_buf_set_unique_address_size(head, buffer_pos);\n"
- "\tv_cmd_buf_set_size(head, buffer_pos);\n"
- "\tv_noq_send_ack_nak_buf(v_con_get_network_queue(), head);\n"
- "\treturn;\n");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "packet_nak", 8, VCGCT_INVISIBLE_SYSTEM);
- v_cg_add_param(VCGP_UINT32, "packet_id");
- v_cg_add_param(VCGP_PACK_INLINE, "\tv_cmd_buf_set_unique_address_size(head, buffer_pos);\n"
- "\tv_cmd_buf_set_size(head, buffer_pos);\n"
- "\tv_noq_send_ack_nak_buf(v_con_get_network_queue(), head);\n"
- "\treturn;\n");
- v_cg_end_cmd();
-
-
- v_cg_new_cmd(V_NT_SYSTEM, "node_index_subscribe", 9, VCGCT_NORMAL);
- v_cg_add_param(VCGP_UINT32, "mask");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "node_create", 10, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_ENUM_NAME, "VNodeType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_ENUM_NAME, "VNodeOwner");
- v_cg_add_param(VCGP_ENUM, "owner");
- v_cg_alias(FALSE, "node_destroy", "if(owner == (uint8) ~0u || type >= V_NT_NUM_TYPES)", 1, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "node_subscribe", 11, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "node_unsubscribe", NULL, 1, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "tag_group_create", 16, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_alias(FALSE, "tag_group_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "tag_group_subscribe", 17, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "tag_group_unsubscribe", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "tag_create", 18, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_UINT16, "group_id");
- v_cg_add_param(VCGP_UINT16, "tag_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_add_param(VCGP_ENUM_NAME, "VNTagType");
- v_cg_add_param(VCGP_ENUM, "type");
- v_cg_add_param(VCGP_POINTER_TYPE, "VNTag");
- v_cg_add_param(VCGP_POINTER, "tag");
- v_cg_add_param(VCGP_PACK_INLINE, "\tif(type > VN_TAG_BLOB)\n"
- "\t{\n"
- "\t\tv_cmd_buf_free(head);\n"
- "\t\treturn;\n"
- "\t}\n"
- "\tswitch(type)\n"
- "\t{\n"
- "\t\tcase VN_TAG_BOOLEAN :\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((VNTag *)tag)->vboolean);\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_UINT32 :\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vuint32);\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_REAL64 :\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64);\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_STRING :\n"
- "\t\t{\n"
- "\t\t\tunsigned int i;\n"
- "\t\t\tfor(i = 0; ((VNTag *)tag)->vstring[i] != 0 && i < VN_TAG_MAX_BLOB_SIZE; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((VNTag *)tag)->vstring[i]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_REAL64_VEC3 :\n"
- "\t\t{\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[0]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[1]);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[2]);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_LINK :\n"
- "\t\t{\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vlink);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_ANIMATION :\n"
- "\t\t{\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.curve);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.start);\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.end);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\t\tcase VN_TAG_BLOB :\n"
- "\t\t{\n"
- "\t\t\tunsigned int i;\n"
- "\t\t\tif(((VNTag *)tag)->vblob.size > VN_TAG_MAX_BLOB_SIZE)\n"
- "\t\t\t\t((VNTag *)tag)->vblob.size = VN_TAG_MAX_BLOB_SIZE;\n"
- "\t\t\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], ((VNTag *)tag)->vblob.size);\n"
- "\t\t\tfor(i = 0; i < ((VNTag *)tag)->vblob.size; i++)\n"
- "\t\t\t\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((uint8 *)((VNTag *)tag)->vblob.blob)[i]);\n"
- "\t\t}\n"
- "\t\tbreak;\n"
- "\t\tdefault :\n"
- "\t\t\t;\n"
- "\t}\n");
- v_cg_add_param(VCGP_UNPACK_INLINE, "\tif(type < VN_TAG_TYPE_COUNT)\n"
- "\t{\n"
- "\t\tVNTag tag;\n"
- "\t\tunsigned int i;\n"
- "\t\tchar string[VN_TAG_MAX_BLOB_SIZE];\n"
- "\t\tswitch(type)\n"
- "\t\t{\n"
- "\t\t\tcase VN_TAG_BOOLEAN :\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &tag.vboolean);\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_UINT32 :\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vuint32);\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_REAL64 :\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64);\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_STRING :\n"
- "\t\t\t{\n"
- "\t\t\t\ttag.vstring = string;\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], string, VN_TAG_MAX_BLOB_SIZE, buffer_length - buffer_pos);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_REAL64_VEC3 :\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[0]);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[1]);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[2]);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_LINK :\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vlink);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_ANIMATION :\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.curve);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.start);\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.end);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\t\tcase VN_TAG_BLOB :\n"
- "\t\t\t{\n"
- "\t\t\t\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &tag.vblob.size);\n"
- "\t\t\t\tif(tag.vblob.size > VN_TAG_MAX_BLOB_SIZE)\n"
- "\t\t\t\t\ttag.vblob.size = VN_TAG_MAX_BLOB_SIZE;\n"
- "\t\t\t\ttag.vblob.blob = string;\n"
- "\t\t\t\tfor(i = 0; i < tag.vblob.size; i++)\n"
- "\t\t\t\t\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &string[i]);\n"
- "\t\t\t}\n"
- "\t\t\tbreak;\n"
- "\t\tdefault :\n"
- "\t\t\t;\n"
- "\t\t}\n"
- "\t\tif(func_tag_create != NULL)\n"
- "\t\tfunc_tag_create(v_fs_get_user_data(18), node_id, group_id, tag_id, name, type, &tag);\n"
- "\t\treturn buffer_pos;\n"
- "\t}\n");
- v_cg_alias(FALSE, "tag_destroy", "if(type >= VN_TAG_TYPE_COUNT)", 3, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_SYSTEM, "node_name_set", 19, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_LONG_NAME, "name");
-
- v_cg_end_cmd();
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_def_t.c b/extern/verse/dist/v_cmd_def_t.c
deleted file mode 100644
index 3c568b42d7b..00000000000
--- a/extern/verse/dist/v_cmd_def_t.c
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "verse_header.h"
-#include "v_cmd_gen.h"
-#include "v_cmd_buf.h"
-
-#if defined(V_GENERATE_FUNC_MODE)
-
-void v_gen_text_cmd_def(void)
-{
- v_cg_new_cmd(V_NT_TEXT, "t_language_set", 96, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_LONG_NAME, "language");
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_TEXT, "t_buffer_create", 97, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_BUFFER_ID, "buffer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_add_param(VCGP_NAME, "name");
- v_cg_alias(FALSE, "t_buffer_destroy", "if(name[0] == 0)", 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_cmd(V_NT_TEXT, "t_buffer_subscribe", 98, VCGCT_NORMAL);
- v_cg_add_param(VCGP_NODE_ID, "node_id");
- v_cg_add_param(VCGP_BUFFER_ID, "buffer_id");
- v_cg_add_param(VCGP_END_ADDRESS, NULL);
- v_cg_alias(TRUE, "t_buffer_unsubscribe", NULL, 2, NULL);
- v_cg_end_cmd();
-
- v_cg_new_manual_cmd(99, "t_text_set", "void verse_send_t_text_set(VNodeID node_id, VBufferID buffer_id, uint32 pos, uint32 length, const char *text)", NULL, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_gen.c b/extern/verse/dist/v_cmd_gen.c
deleted file mode 100644
index 3d18f8cf1af..00000000000
--- a/extern/verse/dist/v_cmd_gen.c
+++ /dev/null
@@ -1,939 +0,0 @@
-/*
-**
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "verse_header.h"
-#include "v_cmd_buf.h"
-
-#include "v_cmd_gen.h"
-
-#if defined _WIN32
-#include <direct.h>
-#define chdir _chdir
-#define snprintf _snprintf
-#endif
-
-#if defined V_GENERATE_FUNC_MODE
-
-#define MAX_PARAMS_PER_CMD 32
-
-static struct {
- FILE *nodes[V_NT_NUM_TYPES_NETPACK];
- FILE *init;
- FILE *unpack;
- FILE *verse_h;
- FILE *internal_verse_h;
- const char *func_name;
- VNodeType type;
- VCGCommandType command;
- unsigned int param_count;
- VCGParam param_type[MAX_PARAMS_PER_CMD];
- const char *param_name[MAX_PARAMS_PER_CMD];
- unsigned int cmd_id;
- const char *alias_name;
- const char *alias_qualifier;
- unsigned int alias_param;
- unsigned int *alias_param_array;
- char alias_bool_switch;
-} VCGData;
-
-extern void v_gen_system_cmd_def(void);
-extern void v_gen_object_cmd_def(void);
-extern void v_gen_geometry_cmd_def(void);
-extern void v_gen_material_cmd_def(void);
-extern void v_gen_bitmap_cmd_def(void);
-extern void v_gen_text_cmd_def(void);
-extern void v_gen_curve_cmd_def(void);
-extern void v_gen_audio_cmd_def(void);
-
-static int v_cg_init(const char *src_path)
-{
- char buf[1024];
- int i;
- FILE *f;
-
- VCGData.nodes[V_NT_OBJECT] = fopen("v_gen_pack_o_node.c", "w");
- VCGData.nodes[V_NT_GEOMETRY] = fopen("v_gen_pack_g_node.c", "w");
- VCGData.nodes[V_NT_MATERIAL] = fopen("v_gen_pack_m_node.c", "w");
- VCGData.nodes[V_NT_BITMAP] = fopen("v_gen_pack_b_node.c", "w");
- VCGData.nodes[V_NT_TEXT] = fopen("v_gen_pack_t_node.c", "w");
- VCGData.nodes[V_NT_CURVE] = fopen("v_gen_pack_c_node.c", "w");
- VCGData.nodes[V_NT_AUDIO] = fopen("v_gen_pack_a_node.c", "w");
- VCGData.nodes[V_NT_SYSTEM] = fopen("v_gen_pack_s_node.c", "w");
- VCGData.init = fopen("v_gen_pack_init.c", "w");
- VCGData.unpack = fopen("v_gen_unpack_func.h", "w");
- VCGData.verse_h = fopen("verse.h", "w");
- VCGData.internal_verse_h = fopen("v_internal_verse.h", "w");
- for(i = 0; i < V_NT_NUM_TYPES_NETPACK + 1; i++)
- {
- if(i == V_NT_NUM_TYPES_NETPACK)
- f = VCGData.init;
- else
- f = VCGData.nodes[i];
- fprintf(f,
- "/*\n"
- "** This is automatically generated source code -- do not edit.\n"
- "** Changes are affected either by editing the corresponding protocol\n"
- "** definition file (v_cmd_def_X.c where X=node type), or by editing\n"
- "** the code generator itself, in v_cmd_gen.c.\n"
- "*/\n\n");
- fprintf(f, "#include <stdlib.h>\n");
- fprintf(f, "#include <stdio.h>\n\n");
- fprintf(f, "#include \"v_cmd_gen.h\"\n");
- fprintf(f, "#if !defined(V_GENERATE_FUNC_MODE)\n");
- fprintf(f, "#include \"verse.h\"\n");
- fprintf(f, "#include \"v_cmd_buf.h\"\n");
- fprintf(f, "#include \"v_network_out_que.h\"\n");
- fprintf(f, "#include \"v_network.h\"\n");
- fprintf(f, "#include \"v_connection.h\"\n");
- fprintf(f, "#include \"v_util.h\"\n\n");
- }
- VCGData.cmd_id = 0;
- fprintf(f, "#include \"v_gen_unpack_func.h\"\n\n");
- fprintf(f,
- "#include \"verse.h\"\n\n\n"
- "extern void verse_send_packet_ack(uint32 packet_id);\n"
- "extern void verse_send_packet_nak(uint32 packet_id);\n\n");
-
- fprintf(VCGData.init, "void init_pack_and_unpack(void)\n{\n");
- fprintf(VCGData.verse_h,
- "/*\n"
- "** Verse API Header file (for use with libverse.a).\n"
- "** This is automatically generated code; do not edit.\n"
- "*/\n\n"
- "\n"
- "#if !defined VERSE_H\n"
- "\n"
- "#if defined __cplusplus\t\t/* Declare as C symbols for C++ users. */\n"
- "extern \"C\" {\n"
- "#endif\n\n"
- "#define\tVERSE_H\n\n");
- /* Copy contents of "verse_header.h" into output "verse.h". */
- snprintf(buf, sizeof buf, "%sverse_header.h", src_path);
- f = fopen(buf, "r");
- if(f != NULL)
- {
- while((i = fgetc(f)) != EOF)
- fputc(i, VCGData.verse_h);
- fclose(f);
- }
- else
- {
- fprintf(stderr, "mkprot: Couldn't find \"%s\" input file\n", buf);
- return 0;
- }
- fprintf(VCGData.verse_h, "\n/* Command sending functions begin. ----------------------------------------- */\n\n");
- return 1;
-}
-
-static void v_cg_close(void)
-{
- unsigned int i;
- for(i = 0; i < V_NT_NUM_TYPES_NETPACK; i++)
- {
- fprintf(VCGData.nodes[i], "#endif\n\n");
- }
- fprintf(VCGData.init, "}\n#endif\n\n");
- fprintf(VCGData.verse_h,
- "\n#if defined __cplusplus\n"
- "}\n"
- "#endif\n");
- fprintf(VCGData.verse_h, "\n#endif\t\t/* VERSE_H */\n");
-}
-
-void v_cg_new_cmd(VCGCommandType type, const char *name, unsigned int cmd_id, VCGCommandType command)
-{
- VCGData.param_count = 0;
- VCGData.func_name = name;
- VCGData.type = type;
- VCGData.cmd_id = cmd_id;
- VCGData.command = command;
-/* printf("def: %u: %s\n", cmd_id, name);*/
-}
-
-void v_cg_new_manual_cmd(unsigned int cmd_id, const char *name, const char *def, const char *alias_name, const char *alias_def)
-{
- fprintf(VCGData.verse_h, "extern %s;\n", def);
- if(alias_def != NULL)
- fprintf(VCGData.verse_h, "extern %s;\n", alias_def);
- fprintf(VCGData.init, "\tv_fs_add_func(%i, v_unpack_%s, (void *) verse_send_%s, ", cmd_id, name, name);
- if(alias_name != NULL)
- fprintf(VCGData.init, "(void *) verse_send_%s);\n", alias_name);
- else
- fprintf(VCGData.init, "NULL);\n");
- fprintf(VCGData.unpack, "extern unsigned int v_unpack_%s(const char *data, size_t length);\n", name);
-/* printf("def: %u: %s\n", cmd_id, name);*/
-}
-
-void v_cg_alias(char bool_switch, const char *name, const char *qualifier, unsigned int param, unsigned int *param_array)
-{
- VCGData.alias_name = name;
- VCGData.alias_qualifier = qualifier;
- VCGData.alias_param = param;
- VCGData.alias_param_array = param_array;
- VCGData.alias_bool_switch = bool_switch;
-}
-
-void v_cg_add_param(VCGParam type, const char *name)
-{
- if(VCGData.param_count == MAX_PARAMS_PER_CMD)
- exit(1);
- VCGData.param_type[VCGData.param_count] = type;
- VCGData.param_name[VCGData.param_count] = name;
- VCGData.param_count++;
-}
-
-static void v_cg_gen_func_params(FILE *f, boolean types, boolean alias)
-{
- unsigned int i;
- unsigned int length, active;
- length = VCGData.param_count;
- if(alias)
- length = VCGData.alias_param;
- for(i = 0; i < length; i++)
- {
- if(alias && VCGData.alias_param_array != NULL)
- active = VCGData.alias_param_array[i];
- else
- {
- for(;(VCGData.param_type[i] == VCGP_PACK_INLINE || VCGData.param_type[i] == VCGP_UNPACK_INLINE || VCGData.param_type[i] == VCGP_POINTER_TYPE || VCGData.param_type[i] == VCGP_ENUM_NAME) && i < VCGData.param_count; i++);
- if(i == VCGData.param_count)
- break;
- active = i;
- }
-
- if(active < VCGData.param_count && VCGData.param_type[active] != VCGP_END_ADDRESS)
- {
- switch(VCGData.param_type[active])
- {
- case VCGP_UINT8 :
- fprintf(f, "uint8 %s", VCGData.param_name[active]);
- break;
- case VCGP_UINT16 :
- fprintf(f, "uint16 %s", VCGData.param_name[active]);
- break;
- case VCGP_UINT32 :
- fprintf(f, "uint32 %s", VCGData.param_name[active]);
- break;
- case VCGP_REAL32 :
- fprintf(f, "real32 %s", VCGData.param_name[active]);
- break;
- case VCGP_REAL64 :
- fprintf(f, "real64 %s", VCGData.param_name[active]);
- break;
- case VCGP_POINTER :
- if(active != 0 && VCGData.param_type[active - 1] == VCGP_POINTER_TYPE)
- fprintf(f, "const %s *%s", VCGData.param_name[active - 1], VCGData.param_name[active]);
- else
- fprintf(f, "const void *%s", VCGData.param_name[active]);
- break;
- case VCGP_NAME :
- if(types)
- fprintf(f, "char %s[16]", VCGData.param_name[active]);
- else
- fprintf(f, "const char *%s", VCGData.param_name[active]);
- break;
- case VCGP_LONG_NAME :
- if(types)
- fprintf(f, "char %s[512]", VCGData.param_name[active]);
- else
- fprintf(f, "const char *%s", VCGData.param_name[active]);
- break;
- case VCGP_NODE_ID :
- fprintf(f, "VNodeID %s", VCGData.param_name[active]);
- break;
- case VCGP_LAYER_ID :
- fprintf(f, "VLayerID %s", VCGData.param_name[active]);
- break;
- case VCGP_BUFFER_ID :
- fprintf(f, "VBufferID %s", VCGData.param_name[active]);
- break;
- case VCGP_FRAGMENT_ID :
- fprintf(f, "VNMFragmentID %s", VCGData.param_name[active]);
- break;
- case VCGP_ENUM :
-/* if(types)
- fprintf(f, "uint8 %s", VCGData.param_name[active]);
- else
-*/ fprintf(f, "%s %s", VCGData.param_name[active - 1], VCGData.param_name[active]);
- break;
- }
- if(types)
- fprintf(f, ";\n\t");
- else
- {
- for(;(VCGData.param_type[active + 1] == VCGP_END_ADDRESS || VCGData.param_type[active + 1] == VCGP_PACK_INLINE || VCGData.param_type[active + 1] == VCGP_UNPACK_INLINE || VCGData.param_type[active + 1] == VCGP_POINTER_TYPE) && active < VCGData.param_count; active++);
- if(active + 1 < length)
- fprintf(f, ", ");
- }
- }
- }
-}
-
-static void v_cg_create_print(FILE *f, boolean send, boolean alias)
-{
- unsigned int i, length, active;
- const char *name;
- if(VCGData.command == VCGCT_INVISIBLE_SYSTEM)
- return;
- name = VCGData.func_name;
- if(alias)
- name = VCGData.alias_name;
- if(send)
- fprintf(f, "\tprintf(\"send: verse_send_%s(", name);
- else
- fprintf(f, "\tprintf(\"receive: verse_send_%s(", name);
-
- length = VCGData.param_count;
- if(alias)
- length = VCGData.alias_param;
- for(i = 0; i < length; i++)
- {
- if(alias && VCGData.alias_param_array != NULL)
- active = VCGData.alias_param_array[i];
- else
- active = i;
-
- switch(VCGData.param_type[active])
- {
- case VCGP_NODE_ID :
- fprintf(f, "%s = %%u ", VCGData.param_name[active]);
- break;
- case VCGP_UINT8 :
- case VCGP_UINT16 :
- case VCGP_UINT32 :
- case VCGP_LAYER_ID :
- case VCGP_BUFFER_ID :
- case VCGP_ENUM :
- case VCGP_FRAGMENT_ID :
- fprintf(f, "%s = %%u ", VCGData.param_name[active]);
- break;
- case VCGP_REAL32 :
- case VCGP_REAL64 :
- fprintf(f, "%s = %%f ", VCGData.param_name[active]);
- break;
- case VCGP_POINTER :
- if(send)
- fprintf(f, "%s = %%p ", VCGData.param_name[active]);
- break;
- case VCGP_NAME :
- case VCGP_LONG_NAME :
- fprintf(f, "%s = %%s ", VCGData.param_name[active]);
- break;
- }
- }
- if(send)
- fprintf(f, ");\\n\"");
- else
- fprintf(f, "); callback = %%p\\n\"");
-
- for(i = 0; i < length; i++)
- {
- if(alias && VCGData.alias_param_array != NULL)
- active = VCGData.alias_param_array[i];
- else
- active = i;
- switch(VCGData.param_type[active])
- {
- case VCGP_NODE_ID :
- fprintf(f, ", %s", VCGData.param_name[active]);
- break;
- case VCGP_POINTER :
- if(!send)
- break;
- case VCGP_UINT8 :
- case VCGP_UINT16 :
- case VCGP_UINT32 :
- case VCGP_LAYER_ID :
- case VCGP_BUFFER_ID :
- case VCGP_ENUM :
- case VCGP_FRAGMENT_ID :
- case VCGP_REAL32 :
- case VCGP_REAL64 :
- case VCGP_NAME :
- case VCGP_LONG_NAME :
- fprintf(f, ", %s", VCGData.param_name[active]);
- break;
- }
- }
- if(send)
- fprintf(f, ");\n");
- else if(alias)
- fprintf(f, ", v_fs_get_alias_user_func(%u));\n", VCGData.cmd_id);
- else
- fprintf(f, ", v_fs_get_user_func(%u));\n", VCGData.cmd_id);
-
-}
-
-static unsigned int v_cg_compute_command_size(unsigned int start, boolean end)
-{
- unsigned int size = 0;
- for(; start < VCGData.param_count; start++)
- {
- switch(VCGData.param_type[start])
- {
- case VCGP_UINT8 :
- case VCGP_ENUM :
- size++;
- break;
- case VCGP_UINT16 :
- case VCGP_LAYER_ID :
- case VCGP_BUFFER_ID :
- case VCGP_FRAGMENT_ID :
- size += 2;
- break;
- case VCGP_NODE_ID :
- case VCGP_UINT32 :
- case VCGP_REAL32 :
- size += 4;
- break;
- case VCGP_REAL64 :
- size += 8;
- break;
- case VCGP_NAME :
- if(end)
- return size;
- size += 16;
- break;
- case VCGP_LONG_NAME :
- if(end)
- return size;
- size += 512;
- break;
- case VCGP_POINTER :
- case VCGP_PACK_INLINE :
- case VCGP_UNPACK_INLINE :
- if(end)
- return size;
- size += 1500;
- break;
- case VCGP_END_ADDRESS :
- if(end)
- return size;
- }
- }
- return size;
-}
-
-void v_cg_set_command_address(FILE *f, boolean alias)
-{
- unsigned int i, j, count = 0, length, size = 1, *param, def[] ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
-
- for(i = 0; i < VCGData.param_count; i++)
- if(VCGData.param_type[i] == VCGP_END_ADDRESS)
- break;
- if(i == VCGData.param_count)
- return;
- if(alias)
- length = VCGData.alias_param;
- else
- length = VCGData.param_count;
-
- if(alias && VCGData.alias_param_array != 0)
- param = VCGData.alias_param_array;
- else
- param = def;
-
- if(i == VCGData.param_count)
- return;
- fprintf(f, "\tif(");
- for(i = j = 0; i < VCGData.param_count; i++)
- {
- switch(VCGData.param_type[i])
- {
- case VCGP_UINT8 :
- case VCGP_ENUM :
- size++;
- break;
- case VCGP_UINT16 :
- case VCGP_LAYER_ID :
- case VCGP_BUFFER_ID :
- case VCGP_FRAGMENT_ID :
- size += 2;
- break;
- case VCGP_NODE_ID :
- case VCGP_UINT32 :
- case VCGP_REAL32 :
- size += 4;
- break;
- }
- if(j < length && param[j] == i)
- {
- switch(VCGData.param_type[param[j]])
- {
- case VCGP_UINT8 :
- case VCGP_ENUM :
- break;
- case VCGP_UINT16 :
- case VCGP_LAYER_ID :
- case VCGP_BUFFER_ID :
- case VCGP_FRAGMENT_ID :
- if(count++ != 0)
- fprintf(f, " || ");
- fprintf(f, "%s == (uint16) ~0u", VCGData.param_name[param[j]]);
- break;
- case VCGP_NODE_ID :
- case VCGP_UINT32 :
- case VCGP_REAL32 :
- if(count++ != 0)
- fprintf(f, " || ");
- fprintf(f, "%s == (uint32) ~0u", VCGData.param_name[param[j]]);
- break;
- }
- j++;
- }
- if(VCGData.param_type[i] == VCGP_END_ADDRESS)
- {
- fprintf(f, ")\n");
- fprintf(f, "\t\tv_cmd_buf_set_unique_address_size(head, %u);\n", size);
- fprintf(f, "\telse\n");
- fprintf(f, "\t\tv_cmd_buf_set_address_size(head, %u);\n", size);
- return;
- }
- }
- fprintf(f, ")\n");
- fprintf(f, "\t\tv_cmd_buf_set_unique_address_size(head, %u);\n", size);
- fprintf(f, "\telse\n");
- fprintf(f, "\t\tv_cmd_buf_set_address_size(head, %u);\n", size);
- return;
-}
-
-static const char * v_cg_compute_buffer_size(void)
-{
- unsigned int size;
- size = v_cg_compute_command_size(0, FALSE) + 1;
- if(size <= 10)
- return "VCMDBS_10";
- else if(size <= 20)
- return "VCMDBS_20";
- else if(size <= 30)
- return "VCMDBS_30";
- else if(size <= 80)
- return "VCMDBS_80";
- else if(size <= 160)
- return "VCMDBS_160";
- else if(size <= 320)
- return "VCMDBS_320";
- return "VCMDBS_1500";
-}
-
-static void v_cg_gen_pack(boolean alias)
-{
- unsigned int i, j, size = 0, ad_size = 0;
- boolean printed = FALSE;
- boolean address = FALSE;
- boolean no_param;
-
- FILE *f;
- f = VCGData.nodes[VCGData.type];
- printf("generating function: verse_send_%s\n", VCGData.func_name);
- if(alias)
- fprintf(f, "void verse_send_%s(", VCGData.alias_name);
- else
- fprintf(f, "void verse_send_%s(", VCGData.func_name);
- v_cg_gen_func_params(f, FALSE, alias);
- fprintf(f, ")\n{\n\tuint8 *buf;\n");
- fprintf(f, "\tunsigned int buffer_pos = 0;\n");
- fprintf(f, "\tVCMDBufHead *head;\n");
- fprintf(f, "\thead = v_cmd_buf_allocate(%s);/* Allocating the buffer */\n", v_cg_compute_buffer_size());
- fprintf(f, "\tbuf = ((VCMDBuffer10 *)head)->buf;\n\n");
-
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], %u);\t/* Pack the command. */\n", VCGData.cmd_id);
-
- fprintf(f, "#if defined V_PRINT_SEND_COMMANDS\n");
- v_cg_create_print(f, TRUE, alias);
- fprintf(f, "#endif\n");
-
- for(i = 0; i < VCGData.param_count; i++)
- {
- const char *param = VCGData.param_name[i];
- no_param = FALSE;
- if(alias)
- {
- if(i >= VCGData.alias_param && VCGData.alias_param_array == NULL)
- no_param = TRUE;
- if(VCGData.alias_param_array != NULL)
- {
- for(j = 0; j < VCGData.alias_param; j++)
- if(VCGData.alias_param_array[j] == i)
- break;
- if(j == VCGData.alias_param)
- no_param = TRUE;
- }
- }
-
- if(no_param)
- param = "-1";
-
- switch(VCGData.param_type[i])
- {
- case VCGP_UINT8 :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_UINT16 :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_UINT32 :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_ENUM :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)%s);\n", param);
- break;
- }
- if(VCGData.param_type[i] == VCGP_REAL32)
- {
- if(no_param)
- param = "V_REAL32_MAX";
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], %s);\n", param);
- }
- if(VCGData.param_type[i] == VCGP_REAL64)
- {
- if(no_param)
- param = "V_REAL64_MAX";
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], %s);\n", param);
- }
- if(no_param)
- param = "NULL";
- switch(VCGData.param_type[i])
- {
- case VCGP_NAME :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], %s, 16);\n", param);
- break;
- case VCGP_LONG_NAME :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_string(&buf[buffer_pos], %s, 512);\n", param);
- break;
- }
- if(no_param)
- {
- /* Horrible work-around, that prevents vertex/polygon deletes from misbehaving. */
- if(strncmp(VCGData.alias_name, "g_vertex_delete_real", 20) == 0 && i == 1)
- param = "0";
- else if(strncmp(VCGData.alias_name, "g_polygon_delete", 16) == 0 && i == 1)
- param = "1";
- else
- param = "-1";
- }
- switch(VCGData.param_type[i])
- {
- case VCGP_NODE_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_LAYER_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_BUFFER_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], %s);\n", param);
- break;
- case VCGP_FRAGMENT_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], %s);\n", param);
- break;
- }
- if(!alias && VCGData.param_type[i] == VCGP_PACK_INLINE)
- fprintf(f, "%s", VCGData.param_name[i]);
- }
- if(VCGData.alias_name != NULL && VCGData.alias_bool_switch)
- {
- if(alias)
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);\n");
- else
- fprintf(f, "\tbuffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);\n");
- }
- v_cg_set_command_address(f, alias);
- fprintf(f, "\tv_cmd_buf_set_size(head, buffer_pos);\n");
-
- fprintf(f, "\tv_noq_send_buf(v_con_get_network_queue(), head);\n");
- fprintf(f, "}\n\n");
-}
-
-static void v_cg_gen_unpack(void)
-{
- FILE *f;
- unsigned int i;
- boolean printed = FALSE;
-
- f = VCGData.nodes[VCGData.type];
- printf("generating function: v_unpack_%s\n", VCGData.func_name);
- fprintf(f, "unsigned int v_unpack_%s(const char *buf, size_t buffer_length)\n", VCGData.func_name);
- fprintf(f, "{\n");
- for(i = 0; i < VCGData.param_count && VCGData.param_type[i] != VCGP_ENUM; i++);
- if(i < VCGData.param_count)
- fprintf(f, "\tuint8 enum_temp;\n");
- fprintf(f, "\tunsigned int buffer_pos = 0;\n");
- fprintf(f, "\tvoid (* func_%s)(void *user_data, ", VCGData.func_name);
- v_cg_gen_func_params(f, FALSE, FALSE);
- fprintf(f, ");\n\t");
- v_cg_gen_func_params(f, TRUE, FALSE);
- if(VCGData.alias_name != NULL && VCGData.alias_bool_switch)
- fprintf(f, "uint8\talias_bool;\n");
- fprintf(f, "\n\tfunc_%s = v_fs_get_user_func(%u);\n", VCGData.func_name, VCGData.cmd_id);
- fprintf(f, "\tif(buffer_length < %u)\n\t\treturn -1;\n", v_cg_compute_command_size(0, TRUE));
- for(i = 0; i < VCGData.param_count; i++)
- {
- switch(VCGData.param_type[i])
- {
- case VCGP_UINT8 :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_UINT16 :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_UINT32 :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_REAL32 :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_REAL64 :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_POINTER_TYPE :
- break;
- case VCGP_POINTER :
- break;
- case VCGP_NAME :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], %s, 16, buffer_length - buffer_pos);\n", VCGData.param_name[i]);
- if(i + 1 < VCGData.param_count)
- fprintf(f, "\tif(buffer_length < %u + buffer_pos)\n\t\treturn -1;\n", v_cg_compute_command_size(i + 1, TRUE));
- break;
- case VCGP_LONG_NAME :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], %s, 512, buffer_length - buffer_pos);\n", VCGData.param_name[i]);
- if(i + 1 < VCGData.param_count)
- fprintf(f, "\tif(buffer_length < %u + buffer_pos)\n\t\treturn -1;\n", v_cg_compute_command_size(i + 1, TRUE));
- break;
- case VCGP_NODE_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_LAYER_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_BUFFER_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_FRAGMENT_ID :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &%s);\n", VCGData.param_name[i]);
- break;
- case VCGP_ENUM :
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);\n");
- fprintf(f, "\t%s = (%s)enum_temp;\n", VCGData.param_name[i], VCGData.param_name[i - 1]);
- break;
- case VCGP_UNPACK_INLINE :
- if(!printed)
- {
- fprintf(f, "#if defined V_PRINT_RECEIVE_COMMANDS\n");
- if(VCGData.alias_name != NULL)
- {
- fprintf(f, "\t%s\n\t", VCGData.alias_qualifier);
- v_cg_create_print(f, FALSE, TRUE);
- fprintf(f, "\telse\n\t");
- }
- v_cg_create_print(f, FALSE, FALSE);
- fprintf(f, "#endif\n");
- printed = TRUE;
- }
- fprintf(f, "%s\n", VCGData.param_name[i++]);
- break;
- }
- }
- if(VCGData.alias_name != NULL && VCGData.alias_bool_switch)
- {
- fprintf(f, "\tif(buffer_length < buffer_pos + 1)\n");
- fprintf(f, "\t\treturn -1;\n");
- fprintf(f, "\tbuffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);\n");
- }
- if(!printed)
- {
- fprintf(f, "#if defined V_PRINT_RECEIVE_COMMANDS\n");
- if(VCGData.alias_name != NULL)
- {
- if(VCGData.alias_qualifier != NULL)
- fprintf(f, "\t%s\n\t", VCGData.alias_qualifier);
- else
- fprintf(f, "\tif(!alias_bool)\n\t");
- v_cg_create_print(f, FALSE, TRUE);
- fprintf(f, "\telse\n\t");
- }
- v_cg_create_print(f, FALSE, FALSE);
- fprintf(f, "#endif\n");
- printed = TRUE;
- }
-
- if(VCGData.alias_name != NULL)
- {
- unsigned int active;
-
- if(VCGData.alias_bool_switch)
- fprintf(f, "\tif(!alias_bool)\n");
- else
- fprintf(f, "\t%s\n", VCGData.alias_qualifier);
- fprintf(f, "\t{\n");
- fprintf(f, "\t\tvoid (* alias_%s)(void *user_data, ", VCGData.alias_name);
- v_cg_gen_func_params(f, FALSE, TRUE);
- fprintf(f, ");\n");
- fprintf(f, "\t\talias_%s = v_fs_get_alias_user_func(%u);\n", VCGData.alias_name, VCGData.cmd_id);
- fprintf(f, "\t\tif(alias_%s != NULL)\n", VCGData.alias_name);
- fprintf(f, "\t\t\talias_%s(v_fs_get_alias_user_data(%u)", VCGData.alias_name, VCGData.cmd_id);
- for(i = 0; i < VCGData.param_count && i < VCGData.alias_param; i++)
- {
- if(VCGData.alias_param_array != NULL)
- active = VCGData.alias_param_array[i];
- else
- active = i;
-
- if(VCGData.param_type[active] != VCGP_PACK_INLINE &&
- VCGData.param_type[active] != VCGP_UNPACK_INLINE &&
- VCGData.param_type[active] != VCGP_END_ADDRESS &&
- VCGData.param_type[active] != VCGP_POINTER_TYPE)
- {
- if(VCGData.param_type[active] == VCGP_ENUM_NAME)
- {
- fprintf(f, ", (%s)%s", VCGData.param_name[active], VCGData.param_name[active + 1]);
- i++;
- }
- else
- fprintf(f, ", %s", VCGData.param_name[active]);
- }
- }
- fprintf(f, ");\n\t\treturn buffer_pos;\n\t}\n");
- }
-
- fprintf(f, "\tif(func_%s != NULL)\n", VCGData.func_name);
- fprintf(f, "\t\tfunc_%s(v_fs_get_user_data(%u)", VCGData.func_name, VCGData.cmd_id);
- for(i = 0; i < VCGData.param_count; i++)
- {
- if(VCGData.param_type[i] != VCGP_PACK_INLINE && VCGData.param_type[i] != VCGP_UNPACK_INLINE && VCGData.param_type[i] != VCGP_END_ADDRESS && VCGData.param_type[i] != VCGP_POINTER_TYPE)
- {
- if(VCGData.param_type[i] == VCGP_ENUM_NAME)
- {
- fprintf(f, ", (%s) %s", VCGData.param_name[i], VCGData.param_name[i + 1]);
- i++;
- }
- else
- fprintf(f, ", %s", VCGData.param_name[i]);
- }
- }
- fprintf(f, ");\n");
- fprintf(f, "\n\treturn buffer_pos;\n");
- fprintf(f, "}\n\n");
-}
-
-static void v_cg_gen_alias(void)
-{
- FILE *f;
- unsigned int i;
- f = VCGData.nodes[VCGData.type];
- fprintf(f, "void verse_send_%s(", VCGData.alias_name);
- v_cg_gen_func_params(f, FALSE, TRUE);
- fprintf(f, ")\n{\n");
- fprintf(f, "\tverse_send_%s(", VCGData.func_name);
- for(i = 0; i < VCGData.param_count; i++)
- if(VCGData.param_type[i] != VCGP_ENUM_NAME && VCGData.param_type[i] != VCGP_PACK_INLINE && VCGData.param_type[i] != VCGP_UNPACK_INLINE && VCGData.param_type[i] != VCGP_END_ADDRESS && VCGData.param_type[i] != VCGP_POINTER_TYPE)
- fprintf(f, ", %s", VCGData.param_name[i]);
- fprintf(f, "}\n\n");
-}
-
-static void v_cg_gen_init(void)
-{
- FILE *f;
- f = VCGData.init;
- fprintf(f, "\tv_fs_add_func(%i, v_unpack_%s, verse_send_%s, ", VCGData.cmd_id, VCGData.func_name, VCGData.func_name);
- if(VCGData.alias_name != NULL)
- fprintf(f, "verse_send_%s);\n", VCGData.alias_name);
- else
- fprintf(f, "NULL);\n");
-}
-
-static void v_cg_gen_verse_h(void)
-{
- FILE *f;
- if(VCGData.command == VCGCT_INVISIBLE_SYSTEM)
- f = VCGData.internal_verse_h;
- else
- f = VCGData.verse_h;
- fprintf(f, "extern void verse_send_%s(", VCGData.func_name);
- v_cg_gen_func_params(f, FALSE, FALSE);
- fprintf(f, ");\n");
- if(VCGData.alias_name != NULL)
- {
- fprintf(f, "extern void verse_send_%s(", VCGData.alias_name);
- v_cg_gen_func_params(f, FALSE, TRUE);
- fprintf(f, ");\n");
- }
-}
-
-static void v_cg_gen_unpack_h(void)
-{
- fprintf(VCGData.unpack, "extern unsigned int v_unpack_%s(const char *data, size_t length);\n", VCGData.func_name);
-}
-
-void v_cg_end_cmd(void)
-{
- v_cg_gen_pack(FALSE);
- if(VCGData.alias_name != NULL)
- v_cg_gen_pack(TRUE);
- v_cg_gen_unpack();
- v_cg_gen_init();
- v_cg_gen_verse_h();
- v_cg_gen_unpack_h();
- VCGData.alias_name = NULL;
-}
-
-int main(int argc, char *argv[])
-{
- const char *src = "";
- int i;
-
- for(i = 1; argv[i] != NULL; i++)
- {
- if(strcmp(argv[i], "-h") == 0)
- {
- printf("Verse protocol generation tool.\nUsage:\n");
- printf(" -h\t\tPrint this usage information, and exit.\n");
- printf(" -src=PATH\tSets source path prefix to PATH. It must be possible to find\n");
- printf("\t\tthe \"verse_header.h\" input file by appending that name to PATH.\n");
- printf("\t\tThus, PATH must end with a proper directory separator character.\n");
- printf(" -dst=PATH\tSets output directory, where all output files are written.\n");
- printf("\t\tIf used, use -src to point to where \"verse_header.h\" is.\n");
- printf("\nThe -src and -dst options were added to simplify building of Verse-Blender.\n");
- return EXIT_SUCCESS;
- }
- else if(strncmp(argv[i], "-src=", 5) == 0)
- src = argv[i] + 5;
- else if(strncmp(argv[i], "-dst=", 5) == 0)
- {
- if(chdir(argv[i] + 5) != 0)
- fprintf(stderr, "%s: Couldn't set output directory to \"%s\"\n", argv[0], argv[i] + 5);
- }
- else
- fprintf(stderr, "%s: Ignoring unknown option \"%s\"\n", argv[0], argv[i]);
- }
-
- printf("start\n");
- if(!v_cg_init(src))
- return EXIT_FAILURE;
- v_gen_system_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_object_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_geometry_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_material_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_bitmap_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_text_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_curve_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_gen_audio_cmd_def();
- fprintf(VCGData.verse_h, "\n");
- v_cg_close();
- printf("end\n");
-
- return EXIT_SUCCESS;
-}
-
-#endif
diff --git a/extern/verse/dist/v_cmd_gen.h b/extern/verse/dist/v_cmd_gen.h
deleted file mode 100644
index 6cc19a84d19..00000000000
--- a/extern/verse/dist/v_cmd_gen.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-**
-*/
-
-/* Define this to at least build the code that regenerates the variable parts of the code. */
-/*#define V_GENERATE_FUNC_MODE*/
-
-typedef enum {
- VCGP_UINT8,
- VCGP_UINT16,
- VCGP_UINT32,
- VCGP_REAL32,
- VCGP_REAL64,
- VCGP_POINTER_TYPE,
- VCGP_POINTER,
- VCGP_NAME,
- VCGP_LONG_NAME,
- VCGP_NODE_ID,
- VCGP_LAYER_ID,
- VCGP_BUFFER_ID,
- VCGP_FRAGMENT_ID,
- VCGP_ENUM_NAME,
- VCGP_ENUM,
- VCGP_PACK_INLINE,
- VCGP_UNPACK_INLINE,
- VCGP_END_ADDRESS
-} VCGParam;
-
-typedef enum {
- VCGCT_NORMAL,
- VCGCT_UNIQUE,
- VCGCT_ONCE,
- VCGCT_INVISIBLE_SYSTEM, /* In the dark we are all invisible. */
- VCGCT_ORDERED
-} VCGCommandType;
-
-extern void v_cg_new_cmd(VCGCommandType type, const char *name, unsigned int cmd_id, VCGCommandType command);
-extern void v_cg_add_param(VCGParam type, const char *name);
-extern void v_cg_alias(char bool_switch, const char *name, const char *qualifier,
- unsigned int param, unsigned int *param_array);
-extern void v_cg_end_cmd(void);
-extern void v_cg_new_manual_cmd(unsigned int cmd_id, const char *name, const char *params, const char *alias_name, const char *alias_params);
diff --git a/extern/verse/dist/v_connect.c b/extern/verse/dist/v_connect.c
deleted file mode 100644
index 31be90e2d47..00000000000
--- a/extern/verse/dist/v_connect.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
-**
-*/
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_encryption.h"
-#include "v_util.h"
-
-extern void verse_send_packet_ack(uint32 packet_id);
-
-static void v_send_hidden_connect_contact(void) /* Stage 0: Clinets inital call to connect to host */
-{
- uint8 buf[V_ENCRYPTION_LOGIN_KEY_HALF_SIZE + 4 + 1 + 1], *key;
- unsigned int i, buffer_pos = 0;
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], 0);/* Packing the packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);/* Packing the command */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);/* Stage 0 */
-
- key = v_con_get_my_key();
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], key[V_ENCRYPTION_LOGIN_PUBLIC_START + i]);/* Packing the command */
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], key[V_ENCRYPTION_LOGIN_N_START + i]);/* Packing the command */
-
- v_n_send_data(v_con_get_network_address(), buf, buffer_pos);
-}
-
-static void v_send_hidden_connect_send_key(void) /* Stage 1: Hosts reply to any atempt to connect */
-{
- uint8 buf[V_ENCRYPTION_LOGIN_KEY_SIZE * 3 + 4 + 1 + 1 + 1 + 4 + 4], *host_id;
- unsigned int i, buffer_pos = 0, s, f;
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], 0);/* Packing the packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);/* Packing the command */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 1);/* Stage 1 */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], V_RELEASE_NUMBER);/* version */
- v_n_get_current_time(&s, &f);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], s);/* time, seconds */
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], f);/* time, fraction */
- host_id = v_con_get_host_id();
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], host_id[V_ENCRYPTION_LOGIN_PUBLIC_START + i]);
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], host_id[V_ENCRYPTION_LOGIN_N_START + i]);
-
- v_n_send_data(v_con_get_network_address(), buf, buffer_pos);
-}
-
-static void v_send_hidden_connect_login(void) /* Stage 2: clients sends encrypted name and password */
-{
- uint8 buf[1500], *key, name_pass[V_ENCRYPTION_LOGIN_KEY_SIZE], encrypted_key[V_ENCRYPTION_LOGIN_KEY_SIZE];
- const char *name, *pass;
- unsigned int buffer_pos = 0, i;
-
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], 1);/* Packing the packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);/* Packing the command */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 2);/* Stage 2 */
- name = v_con_get_name();
- /* Pad data area with randomness. */
- for(i = 0; i < sizeof name_pass; i++)
- name_pass[i] = rand() >> 13;
- v_strlcpy(name_pass, name, V_ENCRYPTION_LOGIN_KEY_SIZE / 2);
- pass = v_con_get_pass();
- v_strlcpy(name_pass + V_ENCRYPTION_LOGIN_KEY_SIZE / 2, pass, V_ENCRYPTION_LOGIN_KEY_SIZE / 2);
- /* Make sure last (MSB) byte is clear, to guarantee that data < key for RSA math. */
- name_pass[sizeof name_pass - 1] = 0;
- key = v_con_get_other_key();
- v_e_connect_encrypt(encrypted_key, name_pass, &key[V_ENCRYPTION_LOGIN_PUBLIC_START], &key[V_ENCRYPTION_LOGIN_N_START]);
-
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], encrypted_key[i]);
- v_n_send_data(v_con_get_network_address(), buf, buffer_pos);
-}
-
-static void v_send_hidden_connect_accept(void) /* Host accepts Clients connectionatempt and sends over data encryption key */
-{
- uint8 buf[1500], *client_key, encrypted[V_ENCRYPTION_DATA_KEY_SIZE];
- unsigned int i, buffer_pos = 0;
-
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], 1);/* Packing the packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 1);/* Packing the command */
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], verse_session_get_avatar());
- client_key = v_con_get_other_key();
- v_e_connect_encrypt(encrypted, v_con_get_data_key(), &client_key[V_ENCRYPTION_LOGIN_PUBLIC_START], &client_key[V_ENCRYPTION_LOGIN_N_START]);
- for(i = 0; i < V_ENCRYPTION_DATA_KEY_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], encrypted[i]);
- v_n_send_data(v_con_get_network_address(), buf, buffer_pos);
-}
-
-static void v_send_hidden_connect_terminate(VNetworkAddress *address, unsigned int packet_id, const char *bye) /* Host accepts Clients connectionatempt and sends over data encryption key */
-{
- uint8 buf[1500];
- unsigned int buffer_pos = 0;
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], packet_id);/* Packing the packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 2);/* Packing the command */
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], bye, 512); /* pack message */
- v_e_data_encrypt_command(buf, sizeof (uint32), buf + sizeof (uint32), buffer_pos, v_con_get_data_key());
- v_n_send_data(address, buf, buffer_pos);
-}
-
-VSession verse_send_connect(const char *name, const char *pass, const char *address, const uint8 *expected_key)
-{
- uint8 *my_key, *key = NULL;
- unsigned int i;
- VNetworkAddress a;
- VSession *session;
- if(v_n_set_network_address(&a, address))
- {
-#if defined(V_PRINT_SEND_COMMANDS)
- char ip_string[32];
-#endif
- session = v_con_connect(a.ip, a.port, V_CS_CONTACT);
-#if defined(V_PRINT_SEND_COMMANDS)
- v_n_get_address_string(&a, ip_string);
- printf("send: %p = verse_send_connect(name = %s, pass = %s, address = %s (%s), expected_key = %p)\n", session, name, pass, address, ip_string, expected_key);
-#endif
- v_con_set_name_pass(name, pass);
- if(expected_key != NULL)
- {
- key = malloc((sizeof *key) * V_ENCRYPTION_LOGIN_KEY_HALF_SIZE);
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_HALF_SIZE; i++)
- key[i] = expected_key[i];
- *v_con_get_expected_key() = key;
- }
- my_key = v_con_get_my_key();
- v_e_connect_create_key(&my_key[V_ENCRYPTION_LOGIN_PRIVATE_START], &my_key[V_ENCRYPTION_LOGIN_PUBLIC_START], &my_key[V_ENCRYPTION_LOGIN_N_START]);
- v_send_hidden_connect_contact();
- v_con_inqueue_timer_update(); /* Reset timer in connection's in queue, above takes a while. */
- return session;
- }
- else
- {
-#if defined(V_PRINT_SEND_COMMANDS)
- printf("send: NULL = verse_send_connect(name = %s, pass = %s, address = %s (Unressolved DNS), key = %p);\n", name, pass, address, key);
-#endif
- return NULL;
- }
-}
-
-void v_update_connection_pending(boolean resend)
-{
- VSession (* func_connect)(void *user_data, const char *name, const char *pass, const char *address, const uint8 *key) = NULL;
- VSession (* func_connect_accept)(void *user_data, VNodeID avatar, char *address, uint8 *host_id);
- void (* func_connect_terminate)(void *user_data, char *address, const char *bye);
- char address_string[32];
-
- switch(v_con_get_connect_stage())
- {
- case V_CS_CONTACT : /* client tries to contact host */
- if(resend)
- v_send_hidden_connect_contact();
- break;
- case V_CS_CONTACTED : /* Host replies with challange */
- if(resend)
- v_send_hidden_connect_send_key();
- break;
- case V_CS_PENDING_ACCEPT : /* Client sends login */
- if(resend)
- v_send_hidden_connect_login();
- break;
- case V_CS_PENDING_HOST_CALLBACK : /* Host got login waits for accept connect callback */
- v_con_set_connect_stage(V_CS_PENDING_DECISION);
- func_connect = v_fs_get_user_func(0);
- v_n_get_address_string(v_con_get_network_address(), address_string);
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: verse_send_connect(address = %s, name = %s, pass = %s, key = NULL); callback = %p\n", address_string, v_con_get_name(), v_con_get_pass(), func_connect);
-#endif
- if(func_connect != 0)
- func_connect(v_fs_get_user_data(0), v_con_get_name(), v_con_get_pass(), address_string, NULL);
- break;
- case V_CS_PENDING_CLIENT_CALLBACK_ACCEPT : /* Host got login waits for accept connect callback */
- v_con_set_connect_stage(V_CS_CONNECTED);
- func_connect_accept = v_fs_get_user_func(1);
- v_n_get_address_string(v_con_get_network_address(), address_string);
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: func_connect_accept(avatar = %u, address = %s, name = %s, pass = %s, key = NULL); callback = %p\n",
- verse_session_get_avatar(), address_string, v_con_get_name(), v_con_get_pass(), func_connect);
-#endif
- if(func_connect_accept != 0)
- func_connect_accept(v_fs_get_user_data(1), verse_session_get_avatar(), address_string, NULL);
- break;
- case V_CS_PENDING_CLIENT_CALLBACK_TERMINATE : /* Host got login waits for accept connect callback */
- v_con_set_connect_stage(V_CS_CONNECTED);
- func_connect_terminate = v_fs_get_user_func(2);
- v_n_get_address_string(v_con_get_network_address(), address_string);
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: func_connect_terminate(address = %s, bye = %s); callback = %p\n", address_string, "no message", func_connect);
-#endif
- if(func_connect_terminate != 0)
- func_connect_terminate(v_fs_get_user_data(2), address_string, "no message");
- break;
- default:
- ;
- }
-}
-
-void v_unpack_connection(const char *buf, unsigned int buffer_length) /* un packing all stages of connect command */
-{
- unsigned int buffer_pos, i, pack_id;
- uint32 seconds, fractions, pre;
- uint8 /*key[V_ENCRYPTION_LOGIN_KEY_SIZE], */stage, cmd_id, version;
-
- if(buffer_length < 5)
- return;
-
- buffer_pos = vnp_raw_unpack_uint32(buf, &pack_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &cmd_id);
- pre = v_con_get_connect_stage();
- if(cmd_id == 0)
- {
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &stage);
- printf(" Handling connection, stage %u\n", stage);
- if(stage == V_CS_IDLE && V_CS_IDLE == v_con_get_connect_stage()) /* reseved by host */
- {
- uint8 *other_key, *my_key;
-
- verse_send_packet_ack(pack_id);
- my_key = v_con_get_my_key();
- v_con_set_data_key(v_e_data_create_key());
- other_key = v_con_get_other_key();
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &other_key[V_ENCRYPTION_LOGIN_PUBLIC_START + i]);/* Packing the command */
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &other_key[V_ENCRYPTION_LOGIN_N_START + i]);/* Packing the command */
- v_con_set_connect_stage(V_CS_CONTACTED);
- v_send_hidden_connect_send_key();
- return;
- }
- if(stage == V_CS_CONTACT && V_CS_CONTACT == v_con_get_connect_stage())
- {
- uint8 *other_key; /* *host_id, *my_key, a[V_ENCRYPTION_LOGIN_KEY_SIZE], b[V_ENCRYPTION_LOGIN_KEY_SIZE];*/
- verse_send_packet_ack(pack_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &version);
- if(version != V_RELEASE_NUMBER)
- {
- /* char error_message[128];
- func_connect_deny = v_fs_get_user_func(2);
- #if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: verse_send_connect_deny(Host is running version %u you are running version %u); callback = %p\n", (uint32)version, (uint32)V_RELEASE_NUMBER func_connect_deny);
- #endif
- if(func_connect_deny != NULL)
- {
- sprintf(error_message, "Host is running version %u you are running version %u", (uint32)version, (uint32)V_RELEASE_NUMBER);
- func_connect_deny(v_fs_get_user_data(2), error_message);
- }*/
- return;
- }
-
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &seconds);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &fractions);
- v_con_set_time(seconds, fractions);
-
- other_key = v_con_get_other_key();
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &other_key[V_ENCRYPTION_LOGIN_PUBLIC_START + i]);
- for(i = 0; i < V_ENCRYPTION_DATA_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &other_key[V_ENCRYPTION_LOGIN_N_START + i]);
-
- v_con_set_connect_stage(V_CS_PENDING_ACCEPT);
- v_send_hidden_connect_login();
- return;
- }
-#if 0
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_HALF_SIZE && encrypted_key[i] == 0; i++);
- if(i < 0)
- {
- other_key = v_con_get_my_key();
- v_e_connect_encrypt(decrypted_key, encrypted_key, &other_key[V_ENCRYPTION_LOGIN_PUBLIC_START + i], &other_key[V_ENCRYPTION_LOGIN_N_START + i]);
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_HALF_SIZE && my_key[V_ENCRYPTION_LOGIN_PUBLIC_START + i] == decrypted_key[i]; i++);
- if(i < 0) /* Host is not who it appers top be */
- {
- func_connect_deny = v_fs_get_user_func(2);
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: verse_send_connect_deny(Host failed identity check); callback = %p\n", func_connect_deny);
-#endif
- if(func_connect_deny != NULL)
- func_connect_deny(v_fs_get_user_data(2), "Host failed identity check");
- return;
- }
- }
-#endif
- if(stage == V_CS_CONTACTED && V_CS_CONTACTED == v_con_get_connect_stage()) /* reseved by host */
- {
- char *host_id, unpack[V_ENCRYPTION_LOGIN_KEY_SIZE], data[V_ENCRYPTION_LOGIN_KEY_SIZE];
- VNetworkAddress *address;
- verse_send_packet_ack(pack_id);
- address = v_con_get_network_address();
- for(i = 0; i < V_ENCRYPTION_LOGIN_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &data[i]);
- host_id = v_con_get_host_id();
- v_e_connect_encrypt(unpack, data, &host_id[V_ENCRYPTION_LOGIN_PRIVATE_START], &host_id[V_ENCRYPTION_LOGIN_N_START]);
- v_con_set_name_pass(unpack, &unpack[V_ENCRYPTION_LOGIN_KEY_SIZE / 2]);
- v_con_set_connect_stage(V_CS_PENDING_HOST_CALLBACK);
- return;
- }
- }
- if(cmd_id == 1 && V_CS_PENDING_ACCEPT == v_con_get_connect_stage()) /* reseved by client */
- {
- uint8 *my_key, key[V_ENCRYPTION_DATA_KEY_SIZE], decrypted[V_ENCRYPTION_DATA_KEY_SIZE];
- uint32 avatar;
- verse_send_packet_ack(pack_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &avatar);
- v_con_set_avatar(avatar);
- for(i = 0; i < V_ENCRYPTION_DATA_KEY_SIZE; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &key[i]);
- my_key = v_con_get_my_key();
- v_e_connect_encrypt(decrypted, key, &my_key[V_ENCRYPTION_LOGIN_PRIVATE_START], &my_key[V_ENCRYPTION_LOGIN_N_START]);
- v_con_set_data_key(decrypted);
- v_con_set_connect_stage(V_CS_PENDING_CLIENT_CALLBACK_ACCEPT);
- v_send_hidden_connect_send_key();
- return;
- }
- if(cmd_id == 2 && V_CS_PENDING_ACCEPT == v_con_get_connect_stage()) /* reseved by client */
- {
- verse_send_packet_ack(pack_id);
- /* buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 512, buffer_length - buffer_pos);
- */ v_con_set_connect_stage(V_CS_PENDING_CLIENT_CALLBACK_TERMINATE);
- return;
- }
-}
-
-VSession verse_send_connect_accept(VNodeID avatar, const char *address, uint8 *host_id)
-{
- VNetworkAddress a;
-#if defined(V_PRINT_SEND_COMMANDS)
- printf("send: verse_send_connect_accept(avatar = %u, address = %s, host_id = NULL);\n", avatar, address);
-#endif
-
- if(!v_n_set_network_address(&a, address))
- return NULL;
- if(v_co_switch_connection(a.ip, a.port))
- {
- if(v_con_get_connect_stage() != V_CS_PENDING_DECISION)
- return NULL;
- v_con_set_avatar(avatar);
- v_con_set_connect_stage(V_CS_CONNECTED);
- v_send_hidden_connect_accept();
- return v_con_get_network_queue();
- }
- return NULL;
-}
-
-void v_callback_connect_terminate(const char *bye)
-{
- void (* func_connect_terminate)(void *user_data, char *address, const char *bye);
- char address_string[32];
-
- printf("terminate (%s)\n", bye);
- func_connect_terminate = v_fs_get_user_func(2);
- v_n_get_address_string(v_con_get_network_address(), address_string);
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("receive: verse_send_connect_terminate(address = %s, bye = %s); callback = %p\n", address_string, bye, func_connect_terminate);
-#endif
- if(func_connect_terminate != 0)
- func_connect_terminate(v_fs_get_user_data(2), address_string, bye);
-}
-
-void verse_send_connect_terminate(const char *address, const char *bye)
-{
- VNetworkAddress a;
-#if defined(V_PRINT_RECEIVE_COMMANDS)
- printf("send: verse_send_connect_terminate(address = %s, bye = %s);\n", address, bye);
-#endif
-
- if(address == NULL)
- v_send_hidden_connect_terminate(v_con_get_network_address(), v_noq_get_next_out_packet_id(v_con_get_network_queue()), bye);
- else if(!v_n_set_network_address(&a, address))
- return;
- else if(v_co_switch_connection(a.ip, a.port))
- v_send_hidden_connect_terminate(v_con_get_network_address(), v_noq_get_next_out_packet_id(v_con_get_network_queue()), bye);
-
- if(v_con_get_connect_stage() != V_CS_PENDING_DECISION)
- verse_session_destroy(v_con_get_network_queue());
-}
-
-void verse_send_ping(const char *address, const char *message)
-{
- VNetworkAddress a;
- if(v_n_set_network_address(&a, address))
- {
- unsigned int buffer_pos = 0;
- uint8 buf[1500];
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], 0);/* Packing the Packet id */
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 5);/* Packing the command */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_ping(address = %s text = %s);\n", address, message);
-#endif
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], message, 1400);
- v_n_send_data(&a, buf, buffer_pos);
- }
-#if defined V_PRINT_SEND_COMMANDS
- else
- printf("send: verse_send_ping(address = %s (FAULTY) message = %s);\n", address, message);
-#endif
-}
-
-unsigned int v_unpack_ping(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_ping)(void *user_data, const char *address, const char *text);
- char address[64];
- char message[1400];
-
- func_ping = v_fs_get_user_func(5);
- v_n_get_address_string(v_con_get_network_address(), address);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], message, 1400, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_ping(address = %s message = %s ); callback = %p\n", address, message, v_fs_get_user_func(5));
-#endif
- if(func_ping != NULL)
- func_ping(v_fs_get_user_data(5), address, message);
- return buffer_pos;
-}
-
-typedef struct {
- uint32 ip;
- uint16 port;
- char message[1400];
- void *next;
-} VPingCommand;
-
-static VPingCommand *v_ping_commands = NULL;
-
-boolean v_connect_unpack_ping(const char *buf, size_t buffer_length, uint32 ip, uint16 port)
-{
- if(buffer_length > 5)
- {
- unsigned int buffer_pos = 0;
- uint8 cmd_id;
- uint32 pack_id;
-
- buffer_pos = vnp_raw_unpack_uint32(&buf[buffer_pos], &pack_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &cmd_id);
- if(cmd_id == 5)
- {
- if(NULL != v_fs_get_user_func(5))
- {
- VPingCommand *pc;
-
- pc = malloc(sizeof *pc);
- pc->ip = ip;
- pc->port = port;
- vnp_raw_unpack_string(&buf[buffer_pos], pc->message,
- sizeof pc->message, buffer_length - buffer_pos);
- pc->next = v_ping_commands;
- v_ping_commands = pc;
- }
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void v_ping_update(void)
-{
- VPingCommand *cp;
- void (* func_ping)(void *user_data, const char *address, const char *text);
- VNetworkAddress a;
- char address[64];
- func_ping = v_fs_get_user_func(5);
-
- while(v_ping_commands != NULL)
- {
- cp = v_ping_commands->next;
- a.ip = v_ping_commands->ip;
- a.port = v_ping_commands->port;
- v_n_get_address_string(&a, address);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_ping(address = %s message = %s ); callback = %p\n", address, v_ping_commands->message, v_fs_get_user_func(5));
-#endif
- if(func_ping != NULL)
- func_ping(v_fs_get_user_data(5), address, v_ping_commands->message);
- free(v_ping_commands);
- v_ping_commands = cp;
- }
-}
-
-#endif
diff --git a/extern/verse/dist/v_connection.c b/extern/verse/dist/v_connection.c
deleted file mode 100644
index 3bfafad5660..00000000000
--- a/extern/verse/dist/v_connection.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_buf.h"
-#include "v_network_in_que.h"
-#include "v_network_out_que.h"
-#include "v_cmd_gen.h"
-#include "v_connection.h"
-#include "v_encryption.h"
-#include "v_util.h"
-
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-
-#define CONNECTION_CHUNK_SIZE 16
-#define V_MAX_CONNECT_PACKET_SIZE 1500
-#define V_CON_MAX_MICROSECOND_BETWEEN_SENDS 100
-#define V_RE_CONNECTON_TIME_OUT 4
-#define V_CONNECTON_TIME_OUT 30
-
-typedef struct {
- VNetOutQueue *out_queue;
- VNetInQueue in_queue;
- VNetworkAddress network_address;
- boolean connected;
- unsigned int avatar;
-/* unsigned int packet_id;*/
- int32 timedelta_s;
- uint32 timedelta_f;
- boolean destroy_flag;
- void *ordered_storage;
- char name[V_ENCRYPTION_LOGIN_KEY_SIZE / 2];
- char pass[V_ENCRYPTION_LOGIN_KEY_SIZE / 2];
- VConnectStage connect_stage;
- unsigned int stage_atempts;
- uint8 key_my[V_ENCRYPTION_LOGIN_KEY_FULL_SIZE];
- uint8 key_other[V_ENCRYPTION_LOGIN_KEY_FULL_SIZE];
- uint8 key_data[V_ENCRYPTION_DATA_KEY_SIZE];
- uint8 *expected_key;
-} VConnection;
-
-static struct {
- VConnection *con;
- unsigned int con_count;
- unsigned int current_connection;
- VNetworkAddress *connect_address;
- void *unified_func_storage;
- uint16 connect_port;
- unsigned int pending_packets;
- uint8 host_id[V_ENCRYPTION_LOGIN_KEY_FULL_SIZE];
-} VConData;
-
-extern void cmd_buf_init(void);
-
-void v_con_init(void) /* since verse doesnt have an init function this function is runned over an ove ard starts whit a check it it has run before */
-{
- static boolean v_con_initialized = FALSE;
-
- if(v_con_initialized)
- return;
- cmd_buf_init();
- v_con_initialized = TRUE;
- VConData.con = malloc(CONNECTION_CHUNK_SIZE * sizeof *VConData.con);
- memset(VConData.con, 0, CONNECTION_CHUNK_SIZE * sizeof *VConData.con); /* Clear the memory. */
- VConData.con_count = 0;
- VConData.pending_packets = 0;
-/* v_e_connect_create_key(&VConData.host_id[V_ENCRYPTION_LOGIN_PRIVATE_START],
- &VConData.host_id[V_ENCRYPTION_LOGIN_PUBLIC_START],
- &VConData.host_id[V_ENCRYPTION_LOGIN_N_START]);*/ /* default host id if none is set by user */
-}
-
-void verse_set_port(uint16 port)
-{
- v_n_set_port(port);
-}
-
-void verse_host_id_create(uint8 *id)
-{
- v_e_connect_create_key(&id[V_ENCRYPTION_LOGIN_PRIVATE_START],
- &id[V_ENCRYPTION_LOGIN_PUBLIC_START], &id[V_ENCRYPTION_LOGIN_N_START]);
-}
-
-void verse_host_id_set(uint8 *id)
-{
- memcpy(VConData.host_id, id, V_ENCRYPTION_LOGIN_KEY_FULL_SIZE);
-}
-
-extern void *v_fs_create_func_storage(void);
-extern void *v_create_ordered_storage(void);
-extern void v_destroy_ordered_storage(void *data);
-
-void *v_con_connect(uint32 ip, uint16 port, VConnectStage stage) /* creates a new connection slot */
-{
- v_con_init(); /* init connections, if not done yet */
- if((VConData.con_count - 1) % CONNECTION_CHUNK_SIZE == 0) /* do we need more slots for connections, then reallocate more space */
- VConData.con = realloc(VConData.con, (sizeof *VConData.con) * (VConData.con_count + CONNECTION_CHUNK_SIZE));
- VConData.con[VConData.con_count].out_queue = v_noq_create_network_queue(); /* create a out queue fo all out going commands */
- v_niq_clear(&VConData.con[VConData.con_count].in_queue); /* clear and init the que of incomming packets.*/
- VConData.con[VConData.con_count].connected = FALSE; /* not yet propperly connected and should not accept commands yet */
- VConData.con[VConData.con_count].network_address.ip = ip; /* ip address of other side */
- VConData.con[VConData.con_count].network_address.port = port; /* port used by other side */
- VConData.con[VConData.con_count].avatar = 0; /* no avatar set yet*/
-/* VConData.con[VConData.con_count].packet_id = 2;*/
- VConData.con[VConData.con_count].destroy_flag = FALSE; /* this is a flag that is set once the connection is about to be destroyed.*/
- VConData.con[VConData.con_count].ordered_storage = v_create_ordered_storage();
- VConData.con[VConData.con_count].name[0] = 0; /* nouser name set yet */
- VConData.con[VConData.con_count].pass[0] = 0; /* no password set yet */
- VConData.con[VConData.con_count].connect_stage = stage; /* this is the stage of the connection, it show if the connection is ready, the init state depends if this is a client or host */
- VConData.con[VConData.con_count].stage_atempts = 0; /* each stage in the connection prosess is atempted multiple times to avoid failiure if packets get lost*/
- VConData.con[VConData.con_count].timedelta_s = 0; /* number of seconds since last incomming packet to the connection*/
- VConData.con[VConData.con_count].timedelta_f = 0; /* number of fractions of a second since last incomming packet to the connection*/
- VConData.con[VConData.con_count].expected_key = NULL; /* expected hist id if this is a client */
- VConData.current_connection = VConData.con_count; /* set the new connection to the current*/
- ++VConData.con_count; /* add one to the number of connections*/
- return VConData.con[VConData.current_connection].out_queue;
-}
-
-void verse_session_destroy(VSession session) /* a session can not be destroyed right away, because this function might be called inside a call back from the session it tryes tpo destroy, therfor it only markes it*/
-{
- unsigned int i;
- for(i = 0; i < VConData.con_count && VConData.con[i].out_queue != session; i++);
- if(i < VConData.con_count)
- {
- VConData.con[i].destroy_flag = TRUE;
- }
-}
-
-void verse_session_set(VSession session) /* find a session and make it the current*/
-{
- unsigned int i;
- for(i = 0; i < VConData.con_count && session != VConData.con[i].out_queue; i++);
- if(i < VConData.con_count)
- VConData.current_connection = i;
-}
-
-VSession verse_session_get(void)
-{
- if(VConData.current_connection < VConData.con_count)
- return VConData.con[VConData.current_connection].out_queue;
- return NULL;
-}
-
-uint32 v_co_find_connection(uint32 ip, uint16 port) /* if a packet comes form a ip address what connection does it belong to? */
-{
- unsigned int i;
-
- for(i = 0; i < VConData.con_count; i++)
- {
- if(ip == VConData.con[i].network_address.ip &&
- port == VConData.con[i].network_address.port &&
- VConData.con[i].destroy_flag == 0)
- {
- return i;
- }
- }
- return -1;
-}
-
-boolean v_co_switch_connection(uint32 ip, uint16 port) /* switches to the current connection to one ip address if it exists */
-{
- unsigned int i;
- for(i = 0; i < VConData.con_count; i++)
- {
- if(ip == VConData.con[i].network_address.ip && port == VConData.con[i].network_address.port)
- {
- VConData.current_connection = i;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void v_con_inqueue_timer_update(void)
-{
- if(VConData.current_connection < VConData.con_count)
- {
- v_niq_timer_update(&VConData.con[VConData.current_connection].in_queue);
- }
-}
-
-/*
-extern void v_fs_buf_unpack(const uint8 *data, unsigned int length);
-extern void v_fs_buf_store_pack(uint8 *data, unsigned int length);
-extern boolean v_fs_buf_unpack_stored(void);
-*/
-extern void v_unpack_connection(const char *buf, unsigned int buffer_length);
-
-extern void verse_send_packet_nak(uint32 packet_id);
-extern void v_callback_connect_terminate(const char *bye);
-extern boolean v_connect_unpack_ping(const char *buf, size_t buffer_length, uint32 ip, uint16 port);
-extern void v_ping_update(void);
-void v_fs_unpack_beginning(uint8 *data, unsigned int length);
-
-/* Main function that receives and distributes all incoming packets. */
-boolean v_con_network_listen(void)
-{
- VNetworkAddress address;
- uint8 buf[V_MAX_CONNECT_PACKET_SIZE], *store;
- int size = 0;
- unsigned int connection;
- uint32 packet_id;
- boolean ret = FALSE;
-
- v_con_init(); /* Init if needed. */
- connection = VConData.current_connection; /* Store current connection in a local variable so that we can restore it later. */
- size = v_n_receive_data(&address, buf, sizeof buf); /* Ask for incoming data from the network. */
- while(size != -1 && size != 0) /* Did we get any data? */
- {
- VConData.current_connection = v_co_find_connection(address.ip, address.port); /* Is there a connection matching the IP and port? */
- vnp_raw_unpack_uint32(buf, &packet_id); /* Unpack the ID of the packet. */
-/* printf("got packet ID %u, %d bytes, connection %u\n", packet_id, size, VConData.current_connection);*/
- if(VConData.current_connection < VConData.con_count &&
- !(VConData.con[VConData.current_connection].connect_stage == V_CS_CONNECTED && packet_id == 0)) /* If this isn't a packet from an existing connection, disregard it. */
- {
- if(VConData.con[VConData.current_connection].connect_stage == V_CS_CONNECTED) /* Is this connection initialized? */
- {
- store = v_niq_store(&VConData.con[VConData.current_connection].in_queue, size, packet_id); /* Store the packet. */
- if(store != NULL)
- {
- VConData.pending_packets++; /* We now have one more packet pending unpack. */
- v_e_data_decrypt_packet(store, buf, size, VConData.con[VConData.current_connection].key_data); /* Decrypt the packet. */
- v_fs_unpack_beginning(store, size);
- }
- }
- else
- {
- v_unpack_connection(buf, size); /* This is an ongoing connecton-attempt. */
- v_niq_timer_update(&VConData.con[VConData.current_connection].in_queue);
- }
- }
- else if(v_connect_unpack_ping(buf, size, address.ip, address.port)) /* Ping handled. */
- ;
- else if(v_fs_func_accept_connections()) /* Do we accept connection-attempts? */
- {
- if(VConData.current_connection >= VConData.con_count ||
- V_RE_CONNECTON_TIME_OUT < v_niq_time_out(&VConData.con[VConData.current_connection].in_queue)) /* Is it a new client, or an old client that we haven't heard form in some time? */
- {
- if(VConData.current_connection < VConData.con_count)
- {
- VConData.con[VConData.current_connection].network_address.ip = 0;
- VConData.con[VConData.current_connection].destroy_flag = TRUE; /* Destroy old connection if there is one. */
- }
- v_con_connect(address.ip, address.port, V_CS_IDLE); /* Create a new connection. */
- v_unpack_connection(buf, size); /* Unpack the connection-attempt. */
- }
- }
- else
- {
- fprintf(stderr, __FILE__ ": Unhandled packet--dropping\n");
- if(VConData.con_count > 0)
- {
- fprintf(stderr, __FILE__ ": State: connections=%u, current=%u (stage %u), packet_id=%u\n",
- VConData.con_count,
- VConData.current_connection,
- (VConData.current_connection < VConData.con_count) ? VConData.con[VConData.current_connection].connect_stage : 0,
- packet_id);
- }
- }
- size = v_n_receive_data(&address, buf, sizeof buf); /* See if there are more incoming packets. */
- ret = TRUE;
- }
- VConData.current_connection = connection; /* Reset the current connection. */
-
- return ret;
-}
-
-extern void v_update_connection_pending(boolean resend);
-
-boolean v_con_callback_update(void)
-{
- static unsigned int seconds;
- boolean output = FALSE;
- size_t size;
- unsigned int connection, s;
- VNetInPacked *p;
-
- v_n_get_current_time(&s, NULL);
- connection = VConData.current_connection;
- for(VConData.current_connection = 0; VConData.current_connection < VConData.con_count; VConData.current_connection++)
- if(VConData.con[VConData.current_connection].connect_stage != V_CS_CONNECTED)
- v_update_connection_pending(s != seconds);
- seconds = s;
- VConData.current_connection = connection;
- if(VConData.pending_packets == 0)
- return FALSE;
- if(VConData.con[VConData.current_connection].connect_stage == V_CS_CONNECTED)
- {
- while((p = v_niq_get(&VConData.con[VConData.current_connection].in_queue, &size)) != NULL)
- {
- VConData.pending_packets--;
- v_fs_unpack(p->data, size);
- v_niq_release(&VConData.con[VConData.current_connection].in_queue, p);
- output = TRUE;
- }
- v_con_network_listen();
- }
- return output;
-}
-
-void verse_callback_update(unsigned int microseconds)
-{
- unsigned int connection, passed;
-
- v_ping_update(); /* Deliver any pending pings. */
- connection = VConData.current_connection;
- for(VConData.current_connection = 0; VConData.current_connection < VConData.con_count; VConData.current_connection++)
- {
- if(VConData.con[VConData.current_connection].connect_stage == V_CS_CONNECTED)
- v_noq_send_queue(VConData.con[VConData.current_connection].out_queue, &VConData.con[VConData.current_connection].network_address);
- if(VConData.con[VConData.current_connection].destroy_flag == TRUE)
- {
- v_noq_destroy_network_queue(VConData.con[VConData.current_connection].out_queue);
- VConData.pending_packets -= v_niq_free(&VConData.con[VConData.current_connection].in_queue);
- v_destroy_ordered_storage(VConData.con[VConData.current_connection].ordered_storage);
- if(VConData.con[VConData.current_connection].expected_key != NULL)
- free(VConData.con[VConData.current_connection].expected_key);
- if(VConData.con_count - 1 != VConData.current_connection)
- VConData.con[VConData.current_connection] = VConData.con[VConData.con_count - 1];
- VConData.con_count--;
- if(connection >= VConData.con_count)
- VConData.current_connection = 0;
- return;
- }
- }
- VConData.current_connection = connection;
-
- if(VConData.con_count > 0)
- {
-/* printf("checking timeout of stage %d connection %u\n",
- VConData.con[VConData.current_connection].connect_stage, VConData.current_connection);
-*/ if(V_CONNECTON_TIME_OUT < v_niq_time_out(&VConData.con[VConData.current_connection].in_queue))
- {
- if(VConData.con[VConData.current_connection].connect_stage != V_CS_CONNECTED)
- {
- VConData.con[VConData.current_connection].destroy_flag = TRUE;
- }
- else
- v_callback_connect_terminate("connection timed out");
- }
- }
-
- v_con_network_listen();
- if(VConData.con_count > 0)
- if(v_con_callback_update())
- return;
- for(passed = 0; passed < microseconds && VConData.pending_packets == 0;)
- {
- boolean update;
- if(microseconds - passed > V_CON_MAX_MICROSECOND_BETWEEN_SENDS) /* Still a long way to go? */
- passed += v_n_wait_for_incoming(V_CON_MAX_MICROSECOND_BETWEEN_SENDS);
- else
- passed += v_n_wait_for_incoming(microseconds - passed);
- do
- {
- update = v_con_network_listen();
- connection = VConData.current_connection;
- for(VConData.current_connection = 0; VConData.current_connection < VConData.con_count; VConData.current_connection++)
- {
- if(VConData.con[VConData.current_connection].connect_stage == V_CS_CONNECTED)
- {
- if(v_noq_send_queue(VConData.con[VConData.current_connection].out_queue, &VConData.con[VConData.current_connection].network_address))
- update = TRUE;
- }
- }
- VConData.current_connection = connection;
- } while(update);
- }
- if(VConData.con_count > 0)
- v_con_callback_update();
-}
-
-void v_con_set_name_pass(const char *name, const char *pass)
-{
- v_strlcpy(VConData.con[VConData.current_connection].name, name, sizeof VConData.con[VConData.current_connection].name);
- v_strlcpy(VConData.con[VConData.current_connection].pass, pass, sizeof VConData.con[VConData.current_connection].pass);
-}
-
-const char * v_con_get_name(void)
-{
- return VConData.con[VConData.current_connection].name;
-}
-
-const char * v_con_get_pass(void)
-{
- return VConData.con[VConData.current_connection].pass;
-}
-
-void v_con_set_connect_stage(VConnectStage stage)
-{
- VConData.con[VConData.current_connection].connect_stage = stage;
- VConData.con[VConData.current_connection].stage_atempts = 0;
-}
-
-VConnectStage v_con_get_connect_stage(void)
-{
- return VConData.con[VConData.current_connection].connect_stage;
-}
-
-uint8 *v_con_get_my_key(void)
-{
- return VConData.con[VConData.current_connection].key_my;
-}
-
-uint8 *v_con_get_other_key(void)
-{
- return VConData.con[VConData.current_connection].key_other;
-}
-
-uint8 **v_con_get_expected_key(void)
-{
- return &VConData.con[VConData.current_connection].expected_key;
-}
-
-uint8 * v_con_get_host_id(void)
-{
- return VConData.host_id;
-}
-
-void v_con_set_data_key(const uint8 *key)
-{
- memcpy(VConData.con[VConData.current_connection].key_data, key, V_ENCRYPTION_DATA_KEY_SIZE);
-}
-
-const uint8 * v_con_get_data_key(void)
-{
- return VConData.con[VConData.current_connection].key_data;
-}
-
-void * v_con_get_network_queue(void)
-{
- return VConData.con[VConData.current_connection].out_queue;
-}
-
-VNetworkAddress * v_con_get_network_address(void)
-{
- return &VConData.con[VConData.current_connection].network_address;
-}
-
-void * v_con_get_ordered_storage(void)
-{
- return VConData.con[VConData.current_connection].ordered_storage;
-}
-
-void v_con_set_avatar(uint32 avatar)
-{
- VConData.con[VConData.current_connection].avatar = avatar;
-}
-
-uint32 verse_session_get_avatar(void)
-{
- return VConData.con[VConData.current_connection].avatar;
-}
-
-void verse_session_get_time(uint32 *seconds, uint32 *fractions)
-{
- uint32 s, f;
- v_n_get_current_time(&s, &f);
- if((uint32)~0 - f < VConData.con[VConData.current_connection].timedelta_f)
- s++;
- if(seconds != NULL)
- {
- if(VConData.con[VConData.current_connection].timedelta_s < 0)
- *seconds = s - (uint32)(-VConData.con[VConData.current_connection].timedelta_s);
- else
- *seconds = s + VConData.con[VConData.current_connection].timedelta_s;
- }
- if(fractions != NULL)
- *fractions = f + VConData.con[VConData.current_connection].timedelta_f;
-}
-
-void v_con_set_time(uint32 seconds, uint32 fractions)
-{
- uint32 s, f;
- v_n_get_current_time(&s, &f);
-
- if(f < fractions)
- s--;
- if (s < seconds)
- VConData.con[VConData.current_connection].timedelta_s = -(int)(seconds - s);
- else
- VConData.con[VConData.current_connection].timedelta_s = (int)(s - seconds);
- VConData.con[VConData.current_connection].timedelta_f = f - fractions;
-}
-
-#endif
diff --git a/extern/verse/dist/v_connection.h b/extern/verse/dist/v_connection.h
deleted file mode 100644
index 1d2ac53d597..00000000000
--- a/extern/verse/dist/v_connection.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-**
-*/
-
-#include "v_network.h"
-
-typedef struct{
- char name[16];
- char pass[16];
- uint8 key;
- VNodeID avatar;
-}VSConnectionID;
-
-typedef enum{
- V_CS_IDLE = 0, /* Host connection waiting for connection */
- V_CS_CONTACT = 1, /* client tryes to contact host */
- V_CS_CONTACTED = 2, /* Host replyes whit challange */
- V_CS_PENDING_ACCEPT = 3, /* Client sends login */
- V_CS_PENDING_HOST_CALLBACK = 4, /* Host got login waits for accept connect callback */
- V_CS_PENDING_CLIENT_CALLBACK_ACCEPT = 5, /* Host got login waits for accept connect callback */
- V_CS_PENDING_CLIENT_CALLBACK_TERMINATE = 6, /* Host got login waits for connect terminate callback */
- V_CS_PENDING_DECISION = 7, /* Host got has executed Callback waits for accept command */
- V_CS_CONNECTED = 8 /* Connection establiched */
-}VConnectStage;
-
-/* Connection related functions (v_connection.c) */
-
-extern boolean v_con_network_listen(void);
-
-extern void v_con_set_name_pass(const char *name, const char *pass);
-extern const char * v_con_get_name(void);
-extern const char * v_con_get_pass(void);
-
-extern void v_con_set_avatar(uint32 avatar);
-extern void v_con_set_time(uint32 seconds, uint32 fractions);
-
-extern void v_con_set_connect_stage(VConnectStage stage);
-extern VConnectStage v_con_get_connect_stage(void);
-
-
-extern uint8 *v_con_get_my_key(void);
-extern uint8 *v_con_get_other_key(void);
-extern uint8 *v_con_get_host_id(void);
-extern uint8 **v_con_get_expected_key(void);
-
-extern void v_con_set_data_key(const uint8 *key);
-extern const uint8 * v_con_get_data_key(void);
-
-
-extern void * v_con_get_network_queue(void);
-extern VNetworkAddress *v_con_get_network_address(void);
-extern void * v_con_get_network_address_id(unsigned int id);
-extern unsigned int * v_con_get_network_expected_packet(void);
-extern void * v_con_get_ordered_storage(void);
-extern void * v_con_get_func_storage(void);
-extern void * v_con_connect(uint32 ip, uint16 port, VConnectStage stage);
-extern unsigned int v_con_get_network_address_count(void);
-
-extern boolean v_co_switch_connection(uint32 ip, uint16 port);
-
-extern void v_con_inqueue_timer_update(void);
-
-
-/* Func storage related functions (v_func_storage.c)*/
-extern void v_fs_unpack(uint8 *data, unsigned int length);
-
-extern boolean v_fs_func_accept_connections(void);
-extern void v_fs_add_func(unsigned int cmd_id, unsigned int (*unpack_func)(const char *buf, size_t buffer_length), void *pack_func, void *alias_func);
-
-extern void * v_fs_get_alias_user_func(unsigned int cmd_id);
-extern void * v_fs_get_alias_user_data(unsigned int cmd_id);
-extern void * v_fs_get_user_func(unsigned int cmd_id);
-extern void * v_fs_get_user_data(unsigned int cmd_id);
diff --git a/extern/verse/dist/v_encryption.c b/extern/verse/dist/v_encryption.c
deleted file mode 100644
index aea0f8e6979..00000000000
--- a/extern/verse/dist/v_encryption.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Verse encryption routines. Implements RSA encryption/decryption plus fast XORx.
-*/
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "verse.h"
-#include "v_pack.h"
-#include "v_bignum.h"
-#include "v_encryption.h"
-
-#define BITS V_ENCRYPTION_LOGIN_KEY_BITS /* Save some typing. */
-
-extern void v_prime_set_random(VBigDig *x);
-extern void v_prime_set_table(VBigDig *x, int i);
-
-const uint8 * v_e_data_create_key(void) /* possibly the worst key gen ever */
-{
- static unsigned int counter = 0;
- static uint8 buffer[V_ENCRYPTION_DATA_KEY_SIZE];
- unsigned int i, temp;
-
- for(i = 0; i < V_ENCRYPTION_DATA_KEY_SIZE; i++)
- {
- counter++;
- temp = (counter << 13) ^ counter;
- temp = (temp * (temp * temp * 15731 + 789221) + 1376312589) & 0x7fffffff;
- buffer[i] = temp;
- }
- /* FIXME: This really isn't very pretty. */
- buffer[0] &= 0x3f; /* Make sure top word is... Low. For RSA compatibility. */
-
-/* memset(buffer, 0, sizeof buffer);
- fprintf(stderr, "**WARNING: XOR data encryption disabled\n");
-*/
- return buffer;
-}
-
-void v_e_data_encrypt_command(uint8 *packet, size_t packet_size, const uint8 *command, size_t command_size, const uint8 *key)
-{
- uint32 pos, i;
-
- vnp_raw_unpack_uint32(packet, &pos);
-/* printf("encrypting packet %u", pos);*/
- pos = key[pos % V_ENCRYPTION_DATA_KEY_SIZE] + packet_size;
-/* printf(" -> pos=%u (size %u)", pos, packet_size);
- printf(", key begins: [");
- for(i = 0; i < 16; i++)
- printf(" %02X", key[(pos + i) % V_ENCRYPTION_DATA_KEY_SIZE]);
- printf(" ]\n");
-*/
- for(i = 0; i < command_size; i++)
- packet[packet_size + i] = command[i] ^ key[(i + pos) % V_ENCRYPTION_DATA_KEY_SIZE];
-}
-
-void v_e_data_decrypt_packet(uint8 *to, const uint8 *from, size_t size, const uint8 *key)
-{
- uint32 pos, i;
-
- vnp_raw_unpack_uint32(from, &pos);
-/* printf("decrypting packet %u", pos);*/
- pos = key[pos % V_ENCRYPTION_DATA_KEY_SIZE];
-/* printf(" -> pos=%u", pos);
- printf(", key begins: [");
- for(i = 0; i < 16; i++)
- printf(" %02X", key[(i + pos) % V_ENCRYPTION_DATA_KEY_SIZE]);
- printf(" ]\n");
-*/ for(i = 0; i < 4; i++)
- to[i] = from[i];
- for(i = 4; i < size; i++)
- to[i] = from[i] ^ key[(i + pos) % V_ENCRYPTION_DATA_KEY_SIZE];
-}
-
-#endif
-
-/* From Knuth. Computes multiplicative inverse of u, modulo v. */
-void v_e_math_inv(VBigDig *inv, const VBigDig *u, const VBigDig *v)
-{
- VBigDig VBIGNUM(u1, 2*BITS), VBIGNUM(u3, 2*BITS), VBIGNUM(v1, 2*BITS), VBIGNUM(v3, 2 *BITS),
- VBIGNUM(t1, 2*BITS), VBIGNUM(t3, 2*BITS), VBIGNUM(q, 2*BITS), VBIGNUM(w, 2*BITS);
- int iter = 1;
-
- v_bignum_set_one(u1);
- v_bignum_set_bignum(u3, u);
- v_bignum_set_zero(v1);
- v_bignum_set_bignum(v3, v);
-
- while(!v_bignum_eq_zero(v3))
- {
- v_bignum_set_bignum(q, u3);
- v_bignum_div(q, v3, t3);
- v_bignum_set_bignum(w, q);
- v_bignum_mul(w, v1);
- v_bignum_set_bignum(t1, u1);
- v_bignum_add(t1, w);
-
- v_bignum_set_bignum(u1, v1);
- v_bignum_set_bignum(v1, t1);
- v_bignum_set_bignum(u3, v3);
- v_bignum_set_bignum(v3, t3);
- iter = -iter;
- }
- if(iter < 0)
- {
- v_bignum_set_bignum(inv, v);
- v_bignum_sub(inv, u1);
- }
- else
- v_bignum_set_bignum(inv, u1);
-}
-
-void v_e_connect_create_key(uint8 *private_key, uint8 *public_key, uint8 *n)
-{
- VBigDig VBIGNUM(p, BITS / 2), VBIGNUM(q, BITS / 2), VBIGNUM(qmo, BITS / 2), VBIGNUM(phi, BITS),
- VBIGNUM(pub, BITS), VBIGNUM(priv, BITS), VBIGNUM(mod, BITS);
-
-#if !defined _WIN32
- /* FIXME: This is a security backdoor. Intent is simply to save time during testing. */
- if(getenv("VERSE_NORSA") != NULL)
- {
- printf("VERSE: Found the NORSA envvar, using constant keys\n");
- v_prime_set_table(p, 0);
- v_prime_set_table(q, 1);
- goto compute_phi;
- }
-#endif
-/* printf("find prime p\n");*/
- v_prime_set_random(p);
-/* printf("find prime q\n");*/
- v_prime_set_random(q);
-compute_phi:
-/* printf("done, computing key\n");*/
-/* printf("p=");
- v_bignum_print_hex_lf(p);
- printf("q=");
- v_bignum_print_hex_lf(q);
-*/ v_bignum_set_bignum(phi, p);
- v_bignum_sub_digit(phi, 1);
- v_bignum_set_bignum(qmo, q);
- v_bignum_sub_digit(qmo, 1);
- v_bignum_mul(phi, qmo);
-/* printf("phi=");
- v_bignum_print_hex_lf(phi);
-*/ v_bignum_set_string_hex(pub, "0x10001");
- v_e_math_inv(priv, pub, phi);
-/* printf(" pub=");
- v_bignum_print_hex_lf(pub);
- printf("priv=");
- v_bignum_print_hex_lf(priv);
-*/
- v_bignum_set_bignum(mod, p);
- v_bignum_mul(mod, q);
-/* printf(" mod=");
- v_bignum_print_hex_lf(mod);
- printf("key-creation finished\n");
-*/ /* Write out the keys. */
- v_bignum_raw_export(pub, public_key);
- v_bignum_raw_export(priv, private_key);
- v_bignum_raw_export(mod, n);
-}
-
-void v_e_connect_encrypt(uint8 *output, const uint8 *data, const uint8 *key, const uint8 *key_n)
-{
- VBigDig VBIGNUM(packet, BITS), VBIGNUM(expo, BITS), VBIGNUM(mod, BITS);
-
- v_bignum_raw_import(packet, data);
- v_bignum_raw_import(expo, key);
- v_bignum_raw_import(mod, key_n);
-
- /* Verify that data is less than the modulo, this is a prerequisite for encryption. */
- if(!v_bignum_gte(mod, packet))
- {
- printf("*** WARNING. Data is not less than modulo, as it should be--encryption will break!\n");
- printf(" RSA modulo: ");
- v_bignum_print_hex_lf(mod);
- printf(" RSA data: ");
- v_bignum_print_hex_lf(packet);
- }
-/* printf("RSA key: ");
- v_bignum_print_hex_lf(expo);
- printf("RSA mod: ");
- v_bignum_print_hex_lf(mod);
- printf("RSA in: ");
- v_bignum_print_hex_lf(packet);
- printf("bits in packet: %d, ", v_bignum_bit_msb(packet) + 1);
- printf("bits in modulo: %d\n", v_bignum_bit_msb(mod) + 1);
-*/ v_bignum_pow_mod(packet, expo, mod); /* Blam. */
-/* printf("RSA out: ");
- v_bignum_print_hex_lf(packet);
-*/ v_bignum_raw_export(packet, output);
-}
-
-#if defined CRYPTALONE
-void v_encrypt_test(void)
-{
- uint8 k_priv[BITS / 8], k_pub[BITS / 8], k_n[BITS / 8], cipher[BITS / 8], plain[BITS / 8], decode[BITS / 8], i;
-
- printf("testing RSA-crypto\n");
- v_e_connect_create_key(k_pub, k_priv, k_n);
-/* exit(0);*/
- printf("key pair generated, encrypting something\n");
- memset(plain, 0, sizeof plain);
- strcpy(plain, "This is some text to encrypt, to give it something to chew on.");
- printf("plain: %02X (%u)\n", plain[0], strlen(plain));
- v_e_connect_encrypt(cipher, plain, k_pub, k_n);
- printf("plain: %02X, cipher: %02X\n", plain[0], cipher[0]);
- v_e_connect_encrypt(decode, cipher, k_priv, k_n);
- printf("decoded: %02X: '", decode[0]);
- for(i = 0; decode[i] != 0; i++)
- putchar(decode[i]);
- printf("'\n");
-/* printf("\npublic key: ");
- v_bignum_print_hex_lf(k_public);
- printf("private key: ");
- v_bignum_print_hex_lf(k_private);
- v_bignum_set_string(msg, "123");
- gettimeofday(&t1, NULL);
- v_bignum_pow_mod(msg, k_private, k_n);
- gettimeofday(&t2, NULL);
- printf("encrypted: ");
- v_bignum_print_hex_lf(msg);
- printf("encrypted %u bits in %g s\n", BITS, t2.tv_sec - t1.tv_sec + 1.0E-6 * (t2.tv_usec - t1.tv_usec));
-
- gettimeofday(&t1, NULL);
- v_bignum_pow_mod(msg, k_public, k_n);
- gettimeofday(&t2, NULL);
- printf("decrypted: ");
- v_bignum_print_hex_lf(msg);
- printf("decrypted %u bits in %g s\n", BITS, t2.tv_sec - t1.tv_sec + 1.0E-6 * (t2.tv_usec - t1.tv_usec));
- exit(0);
-*//* v_e_encrypt(cipher, plain, &k_private, &k_n);
- printf("encrypted data: ");
- for(i = 0; i < sizeof cipher; i++)
- printf("%c", isalnum(cipher[i]) ? cipher[i] : '?');
- printf("\n\n");
- printf("decrypting\n");
- v_e_encrypt(decode, cipher, &k_public, &k_n);
- printf("decrypted data: ");
- for(i = 0; i < sizeof cipher; i++)
- printf("%c", isalnum(decode[i]) ? decode[i] : '?');
- printf("\n\n");
-*/
-}
-
-int main(void)
-{
- v_encrypt_test();
-
- return 0;
-}
-#endif
diff --git a/extern/verse/dist/v_encryption.h b/extern/verse/dist/v_encryption.h
deleted file mode 100644
index cbfb5ff692f..00000000000
--- a/extern/verse/dist/v_encryption.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Verse encryption routines. There are two distinct flavors of encryption
- * in use: one "heavy" for login/connection establishment security, and
- * a far lighter symmetrical one that is applied to each data packet after
- * the key has been exchanged during connection.
-*/
-
-#include "verse.h"
-
-/* Internal key size definitions. *MUST* be kept in sync with V_HOST_ID_SIZE in verse_header.h! */
-#define V_ENCRYPTION_LOGIN_KEY_BITS 512
-#define V_ENCRYPTION_LOGIN_KEY_SIZE (V_ENCRYPTION_LOGIN_KEY_BITS / 8)
-#define V_ENCRYPTION_LOGIN_KEY_FULL_SIZE (3 * V_ENCRYPTION_LOGIN_KEY_SIZE)
-#define V_ENCRYPTION_LOGIN_KEY_HALF_SIZE (2 * V_ENCRYPTION_LOGIN_KEY_SIZE)
-
-#define V_ENCRYPTION_LOGIN_PUBLIC_START (0 * V_ENCRYPTION_LOGIN_KEY_SIZE)
-#define V_ENCRYPTION_LOGIN_PRIVATE_START (1 * V_ENCRYPTION_LOGIN_KEY_SIZE)
-#define V_ENCRYPTION_LOGIN_N_START (2 * V_ENCRYPTION_LOGIN_KEY_SIZE)
-
-#define V_ENCRYPTION_DATA_KEY_SIZE (V_ENCRYPTION_LOGIN_KEY_BITS / 8)
-
-/* Connection encryption. Heavy, and symmetrical, so encrypt() does both encryption
- * and decryption given the proper key. Current algorithm used is RSA.
-*/
-extern void v_e_connect_create_key(uint8 *private_key, uint8 *public_key, uint8 *n);
-extern void v_e_connect_encrypt(uint8 *output, const uint8 *data, const uint8 *key, const uint8 *key_n);
-
-/* Actual data traffic encryption. Also symmetrical, with a single key. Uses XOR. */
-extern const uint8 * v_e_data_create_key(void);
-extern void v_e_data_encrypt_command(uint8 *packet, size_t packet_length,
- const uint8 *command, size_t command_length, const uint8 *key);
-extern void v_e_data_decrypt_packet(uint8 *to, const uint8 *from, size_t size, const uint8 *key);
diff --git a/extern/verse/dist/v_func_storage.c b/extern/verse/dist/v_func_storage.c
deleted file mode 100644
index 86c7815c2af..00000000000
--- a/extern/verse/dist/v_func_storage.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- *
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "verse_header.h"
-#include "v_pack.h"
-#include "v_cmd_gen.h"
-#include "v_connection.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-
-#define V_FS_MAX_CMDS 256
-
-extern void init_pack_and_unpack(void);
-
-static struct {
- unsigned int (*unpack_func[V_FS_MAX_CMDS])(const char *data, size_t length);
- void *pack_func[V_FS_MAX_CMDS];
- void *user_func[V_FS_MAX_CMDS];
- void *user_data[V_FS_MAX_CMDS];
- void *alias_pack_func[V_FS_MAX_CMDS];
- void *alias_user_func[V_FS_MAX_CMDS];
- void *alias_user_data[V_FS_MAX_CMDS];
- boolean call;
-} VCmdData;
-
-static boolean v_fs_initialized = FALSE;
-
-extern void verse_send_packet_ack(uint32 packet_id);
-extern void callback_send_packet_ack(void *user, uint32 packet_id);
-extern void verse_send_packet_nak(uint32 packet_id);
-extern void callback_send_packet_nak(void *user, uint32 packet_id);
-
-void v_fs_init(void)
-{
- unsigned int i;
- if(v_fs_initialized)
- return;
- for(i = 0; i < V_FS_MAX_CMDS; i++)
- {
- VCmdData.unpack_func[i] = NULL;
- VCmdData.pack_func[i] = NULL;
- VCmdData.user_func[i] = NULL;
- VCmdData.user_data[i] = NULL;
- VCmdData.alias_pack_func[i] = NULL;
- VCmdData.alias_user_func[i] = NULL;
- VCmdData.alias_user_data[i] = NULL;
- }
- #if !defined(V_GENERATE_FUNC_MODE)
- init_pack_and_unpack();
- #endif
- for(i = 0; i < V_FS_MAX_CMDS && VCmdData.pack_func[i] != verse_send_packet_ack; i++);
- VCmdData.user_func[i] = callback_send_packet_ack;
- for(i = 0; i < V_FS_MAX_CMDS && VCmdData.pack_func[i] != verse_send_packet_nak; i++);
- VCmdData.user_func[i] = callback_send_packet_nak;
-
- v_fs_initialized = TRUE;
-}
-
-
-void v_fs_add_func(unsigned int cmd_id, unsigned int (*unpack_func)(const char *data, size_t length), void *pack_func, void *alias_func)
-{
- VCmdData.unpack_func[cmd_id] = unpack_func;
- VCmdData.pack_func[cmd_id] = pack_func;
- VCmdData.alias_pack_func[cmd_id] = alias_func;
-}
-
-void *v_fs_get_user_func(unsigned int cmd_id)
-{
-/* if(VCmdData.call)*/
- return VCmdData.user_func[cmd_id];
- return NULL;
-}
-
-void *v_fs_get_user_data(unsigned int cmd_id)
-{
- return VCmdData.user_data[cmd_id];
-}
-
-void *v_fs_get_alias_user_func(unsigned int cmd_id)
-{
-/* if(VCmdData.call)*/
- return VCmdData.alias_user_func[cmd_id];
- return NULL;
-}
-
-void *v_fs_get_alias_user_data(unsigned int cmd_id)
-{
- return VCmdData.alias_user_data[cmd_id];
-}
-
-void verse_callback_set(void *command, void *callback, void *user)
-{
- unsigned int i;
- if(!v_fs_initialized)
- v_fs_init();
-
- for(i = 0; i < V_FS_MAX_CMDS; i++)
- {
- if(VCmdData.pack_func[i] == command)
- {
- VCmdData.user_data[i] = user;
- VCmdData.user_func[i] = callback;
- return;
- }
- if(VCmdData.alias_pack_func[i] == command)
- {
- VCmdData.alias_user_data[i] = user;
- VCmdData.alias_user_func[i] = callback;
- return;
- }
- }
-}
-
-/* Do we accept incoming connections, i.e. are we a host implementation? */
-boolean v_fs_func_accept_connections(void)
-{
- return VCmdData.user_func[0] != NULL;
-}
-
-/* Inspect beginning of packet, looking for ACK or NAK commands. */
-void v_fs_unpack_beginning(const uint8 *data, unsigned int length)
-{
- uint32 id, i = 4;
- uint8 cmd_id;
-
- i += vnp_raw_unpack_uint8(&data[i], &cmd_id);
- while(i < length && (cmd_id == 7 || cmd_id == 8))
- {
- i += vnp_raw_unpack_uint32(&data[i], &id);
- if(cmd_id == 7)
- callback_send_packet_ack(NULL, id);
- else
- callback_send_packet_nak(NULL, id);
- i += vnp_raw_unpack_uint8(&data[i], &cmd_id);
- }
-}
-
-void v_fs_unpack(uint8 *data, unsigned int length)
-{
- uint32 i, output, pack_id;
- uint8 cmd_id, last = 255;
-
- i = vnp_raw_unpack_uint32(data, &pack_id); /* each packet starts with a 32 bit id */
- vnp_raw_unpack_uint8(&data[i], &cmd_id);
- while(i < length && (cmd_id == 7 || cmd_id == 8))
- {
- i += 5;
- vnp_raw_unpack_uint8(&data[i], &cmd_id);
- }
- while(i < length)
- {
- i += vnp_raw_unpack_uint8(&data[i], &cmd_id);
- if(VCmdData.unpack_func[cmd_id] != NULL)
- {
- VCmdData.call = TRUE;
- output = VCmdData.unpack_func[cmd_id](&data[i], length - i);
- if(output == (unsigned int) -1) /* Can this happen? Should be size_t or int, depending. */
- {
- printf("** Aborting decode, command %u unpacker returned failure\n", cmd_id);
-/* verse_send_packet_nak(pack_id);*/
- return;
- }
- last = cmd_id;
- i += output;
- }
- else /* If unknown command byte was found, complain loudly and stop parsing packet. */
- {
- size_t j;
-
- printf("\n** Unknown command ID %u (0x%02X) encountered--aborting packet decode len=%u pos=%u last=%u\n", cmd_id, cmd_id, length, i, last);
- printf(" decoded %u bytes: ", --i);
- for(j = 0; j < i; j++)
- printf("%02X ", data[j]);
- printf("\n (packet id=%u)", pack_id);
- printf(" remaining %u bytes: ", length - i);
- for(j = i; j < length; j++)
- printf("%02X ", data[j]);
- printf("\n");
-/* *(char *) 0 = 0;*/
- break;
- }
- }
-/* if(expected != NULL)
- verse_send_packet_ack(pack_id);*/
-}
-
-extern unsigned int v_unpack_connection(const char *data, size_t length);
-
-#endif
diff --git a/extern/verse/dist/v_gen_pack_a_node.c b/extern/verse/dist/v_gen_pack_a_node.c
deleted file mode 100644
index dc8e53e1a7f..00000000000
--- a/extern/verse/dist/v_gen_pack_a_node.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_a_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name, VNABlockType type, real64 frequency)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 160); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_buffer_create(node_id = %u buffer_id = %u name = %s type = %u frequency = %f );\n", node_id, buffer_id, name, type, frequency);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], frequency);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_a_buffer_destroy(VNodeID node_id, VBufferID buffer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 160); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_buffer_destroy(node_id = %u buffer_id = %u );\n", node_id, buffer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_buffer_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_a_buffer_create)(void *user_data, VNodeID node_id, VBufferID buffer_id, const char *name, VNABlockType type, real64 frequency);
- VNodeID node_id;
- VBufferID buffer_id;
- char name[16];
- VNABlockType type;
- real64 frequency;
-
- func_a_buffer_create = v_fs_get_user_func(160);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &buffer_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
- if(buffer_length < 9 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNABlockType)enum_temp;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frequency);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_a_buffer_destroy(node_id = %u buffer_id = %u ); callback = %p\n", node_id, buffer_id, v_fs_get_alias_user_func(160));
- else
- printf("receive: verse_send_a_buffer_create(node_id = %u buffer_id = %u name = %s type = %u frequency = %f ); callback = %p\n", node_id, buffer_id, name, type, frequency, v_fs_get_user_func(160));
-#endif
- if(name[0] == 0)
- {
- void (* alias_a_buffer_destroy)(void *user_data, VNodeID node_id, VBufferID buffer_id);
- alias_a_buffer_destroy = v_fs_get_alias_user_func(160);
- if(alias_a_buffer_destroy != NULL)
- alias_a_buffer_destroy(v_fs_get_alias_user_data(160), node_id, buffer_id);
- return buffer_pos;
- }
- if(func_a_buffer_create != NULL)
- func_a_buffer_create(v_fs_get_user_data(160), node_id, buffer_id, name, (VNABlockType) type, frequency);
-
- return buffer_pos;
-}
-
-void verse_send_a_buffer_subscribe(VNodeID node_id, VBufferID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 161); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_buffer_subscribe(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_a_buffer_unsubscribe(VNodeID node_id, VBufferID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 161); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_buffer_unsubscribe(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_buffer_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_a_buffer_subscribe)(void *user_data, VNodeID node_id, VBufferID layer_id);
- VNodeID node_id;
- VBufferID layer_id;
- uint8 alias_bool;
-
- func_a_buffer_subscribe = v_fs_get_user_func(161);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_a_buffer_unsubscribe(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_alias_user_func(161));
- else
- printf("receive: verse_send_a_buffer_subscribe(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_user_func(161));
-#endif
- if(!alias_bool)
- {
- void (* alias_a_buffer_unsubscribe)(void *user_data, VNodeID node_id, VBufferID layer_id);
- alias_a_buffer_unsubscribe = v_fs_get_alias_user_func(161);
- if(alias_a_buffer_unsubscribe != NULL)
- alias_a_buffer_unsubscribe(v_fs_get_alias_user_data(161), node_id, layer_id);
- return buffer_pos;
- }
- if(func_a_buffer_subscribe != NULL)
- func_a_buffer_subscribe(v_fs_get_user_data(161), node_id, layer_id);
-
- return buffer_pos;
-}
-
-void verse_send_a_block_set(VNodeID node_id, VLayerID buffer_id, uint32 block_index, VNABlockType type, const VNABlock *samples)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 162); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_block_set(node_id = %u buffer_id = %u block_index = %u type = %u samples = %p );\n", node_id, buffer_id, block_index, type, samples);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], block_index);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_pack_audio_block(&buf[buffer_pos], type, samples);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u || block_index == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_a_block_clear(VNodeID node_id, VLayerID buffer_id, uint32 block_index)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 162); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_block_clear(node_id = %u buffer_id = %u block_index = %u );\n", node_id, buffer_id, block_index);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], block_index);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u || block_index == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_block_set(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_a_block_set)(void *user_data, VNodeID node_id, VLayerID buffer_id, uint32 block_index, VNABlockType type, const VNABlock *samples);
- VNodeID node_id;
- VLayerID buffer_id;
- uint32 block_index;
- VNABlockType type;
- const VNABlock *samples;
-
- func_a_block_set = v_fs_get_user_func(162);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &buffer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &block_index);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNABlockType)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(type > VN_A_BLOCK_REAL64)
- printf("receive: verse_send_a_block_clear(node_id = %u buffer_id = %u block_index = %u ); callback = %p\n", node_id, buffer_id, block_index, v_fs_get_alias_user_func(162));
- else
- printf("receive: verse_send_a_block_set(node_id = %u buffer_id = %u block_index = %u type = %u ); callback = %p\n", node_id, buffer_id, block_index, type, v_fs_get_user_func(162));
-#endif
- if(type <= VN_A_BLOCK_REAL64)
- {
- VNABlock block;
- buffer_pos += vnp_unpack_audio_block(&buf[buffer_pos], type, &block);
- if(func_a_block_set != NULL)
- func_a_block_set(v_fs_get_user_data(162), node_id, buffer_id, block_index, (VNABlockType) type, &block);
- return buffer_pos;
- }
-
- if(type > VN_A_BLOCK_REAL64)
- {
- void (* alias_a_block_clear)(void *user_data, VNodeID node_id, VLayerID buffer_id, uint32 block_index);
- alias_a_block_clear = v_fs_get_alias_user_func(162);
- if(alias_a_block_clear != NULL)
- alias_a_block_clear(v_fs_get_alias_user_data(162), node_id, buffer_id, block_index);
- return buffer_pos;
- }
- if(func_a_block_set != NULL)
- func_a_block_set(v_fs_get_user_data(162), node_id, buffer_id, block_index, (VNABlockType) type, samples);
-
- return buffer_pos;
-}
-
-void verse_send_a_stream_create(VNodeID node_id, VLayerID stream_id, const char *name)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 163); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_stream_create(node_id = %u stream_id = %u name = %s );\n", node_id, stream_id, name);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], stream_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- if(node_id == (uint32) ~0u || stream_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_a_stream_destroy(VNodeID node_id, VLayerID stream_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 163); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_stream_destroy(node_id = %u stream_id = %u );\n", node_id, stream_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], stream_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- if(node_id == (uint32) ~0u || stream_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_stream_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_a_stream_create)(void *user_data, VNodeID node_id, VLayerID stream_id, const char *name);
- VNodeID node_id;
- VLayerID stream_id;
- char name[16];
-
- func_a_stream_create = v_fs_get_user_func(163);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &stream_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_a_stream_destroy(node_id = %u stream_id = %u ); callback = %p\n", node_id, stream_id, v_fs_get_alias_user_func(163));
- else
- printf("receive: verse_send_a_stream_create(node_id = %u stream_id = %u name = %s ); callback = %p\n", node_id, stream_id, name, v_fs_get_user_func(163));
-#endif
- if(name[0] == 0)
- {
- void (* alias_a_stream_destroy)(void *user_data, VNodeID node_id, VLayerID stream_id);
- alias_a_stream_destroy = v_fs_get_alias_user_func(163);
- if(alias_a_stream_destroy != NULL)
- alias_a_stream_destroy(v_fs_get_alias_user_data(163), node_id, stream_id);
- return buffer_pos;
- }
- if(func_a_stream_create != NULL)
- func_a_stream_create(v_fs_get_user_data(163), node_id, stream_id, name);
-
- return buffer_pos;
-}
-
-void verse_send_a_stream_subscribe(VNodeID node_id, VLayerID stream_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 164); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_stream_subscribe(node_id = %u stream_id = %u );\n", node_id, stream_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], stream_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || stream_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_a_stream_unsubscribe(VNodeID node_id, VLayerID stream_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 164); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_stream_unsubscribe(node_id = %u stream_id = %u );\n", node_id, stream_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], stream_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || stream_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_stream_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_a_stream_subscribe)(void *user_data, VNodeID node_id, VLayerID stream_id);
- VNodeID node_id;
- VLayerID stream_id;
- uint8 alias_bool;
-
- func_a_stream_subscribe = v_fs_get_user_func(164);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &stream_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_a_stream_unsubscribe(node_id = %u stream_id = %u ); callback = %p\n", node_id, stream_id, v_fs_get_alias_user_func(164));
- else
- printf("receive: verse_send_a_stream_subscribe(node_id = %u stream_id = %u ); callback = %p\n", node_id, stream_id, v_fs_get_user_func(164));
-#endif
- if(!alias_bool)
- {
- void (* alias_a_stream_unsubscribe)(void *user_data, VNodeID node_id, VLayerID stream_id);
- alias_a_stream_unsubscribe = v_fs_get_alias_user_func(164);
- if(alias_a_stream_unsubscribe != NULL)
- alias_a_stream_unsubscribe(v_fs_get_alias_user_data(164), node_id, stream_id);
- return buffer_pos;
- }
- if(func_a_stream_subscribe != NULL)
- func_a_stream_subscribe(v_fs_get_user_data(164), node_id, stream_id);
-
- return buffer_pos;
-}
-
-void verse_send_a_stream(VNodeID node_id, VLayerID stream_id, uint32 time_s, uint32 time_f, VNABlockType type, real64 frequency, const VNABlock *samples)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 165); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_a_stream(node_id = %u stream_id = %u time_s = %u time_f = %u type = %u frequency = %f samples = %p );\n", node_id, stream_id, time_s, time_f, type, frequency, samples);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], stream_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], frequency);
- buffer_pos += vnp_pack_audio_block(&buf[buffer_pos], type, samples);
- if(node_id == (uint32) ~0u || stream_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_a_stream(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_a_stream)(void *user_data, VNodeID node_id, VLayerID stream_id, uint32 time_s, uint32 time_f, VNABlockType type, real64 frequency, const VNABlock *samples);
- VNodeID node_id;
- VLayerID stream_id;
- uint32 time_s;
- uint32 time_f;
- VNABlockType type;
- real64 frequency;
- const VNABlock *samples;
-
- func_a_stream = v_fs_get_user_func(165);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &stream_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNABlockType)enum_temp;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frequency);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_a_stream(node_id = %u stream_id = %u time_s = %u time_f = %u type = %u frequency = %f ); callback = %p\n", node_id, stream_id, time_s, time_f, type, frequency, v_fs_get_user_func(165));
-#endif
- {
- VNABlock block;
- buffer_pos += vnp_unpack_audio_block(&buf[buffer_pos], type, &block);
- if(func_a_stream != NULL)
- func_a_stream(v_fs_get_user_data(165), node_id, stream_id, time_s, time_f, (VNABlockType) type, frequency, &block);
- return buffer_pos;
- }
-
- if(func_a_stream != NULL)
- func_a_stream(v_fs_get_user_data(165), node_id, stream_id, time_s, time_f, (VNABlockType) type, frequency, samples);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_b_node.c b/extern/verse/dist/v_gen_pack_b_node.c
deleted file mode 100644
index a4792a10fe4..00000000000
--- a/extern/verse/dist/v_gen_pack_b_node.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_b_dimensions_set(VNodeID node_id, uint16 width, uint16 height, uint16 depth)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 80); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_dimensions_set(node_id = %u width = %u height = %u depth = %u );\n", node_id, width, height, depth);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], width);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], height);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], depth);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_b_dimensions_set(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_b_dimensions_set)(void *user_data, VNodeID node_id, uint16 width, uint16 height, uint16 depth);
- VNodeID node_id;
- uint16 width;
- uint16 height;
- uint16 depth;
-
- func_b_dimensions_set = v_fs_get_user_func(80);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &width);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &height);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &depth);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_b_dimensions_set(node_id = %u width = %u height = %u depth = %u ); callback = %p\n", node_id, width, height, depth, v_fs_get_user_func(80));
-#endif
- if(func_b_dimensions_set != NULL)
- func_b_dimensions_set(v_fs_get_user_data(80), node_id, width, height, depth);
-
- return buffer_pos;
-}
-
-void verse_send_b_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNBLayerType type)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 81); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_layer_create(node_id = %u layer_id = %u name = %s type = %u );\n", node_id, layer_id, name, type);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_b_layer_destroy(VNodeID node_id, VLayerID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 81); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_layer_destroy(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_b_layer_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_b_layer_create)(void *user_data, VNodeID node_id, VLayerID layer_id, const char *name, VNBLayerType type);
- VNodeID node_id;
- VLayerID layer_id;
- char name[16];
- VNBLayerType type;
-
- func_b_layer_create = v_fs_get_user_func(81);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
- if(buffer_length < 1 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNBLayerType)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_b_layer_destroy(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_alias_user_func(81));
- else
- printf("receive: verse_send_b_layer_create(node_id = %u layer_id = %u name = %s type = %u ); callback = %p\n", node_id, layer_id, name, type, v_fs_get_user_func(81));
-#endif
- if(name[0] == 0)
- {
- void (* alias_b_layer_destroy)(void *user_data, VNodeID node_id, VLayerID layer_id);
- alias_b_layer_destroy = v_fs_get_alias_user_func(81);
- if(alias_b_layer_destroy != NULL)
- alias_b_layer_destroy(v_fs_get_alias_user_data(81), node_id, layer_id);
- return buffer_pos;
- }
- if(func_b_layer_create != NULL)
- func_b_layer_create(v_fs_get_user_data(81), node_id, layer_id, name, (VNBLayerType) type);
-
- return buffer_pos;
-}
-
-void verse_send_b_layer_subscribe(VNodeID node_id, VLayerID layer_id, uint8 level)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 82); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_layer_subscribe(node_id = %u layer_id = %u level = %u );\n", node_id, layer_id, level);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], level);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_b_layer_unsubscribe(VNodeID node_id, VLayerID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 82); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_layer_unsubscribe(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], -1);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_b_layer_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_b_layer_subscribe)(void *user_data, VNodeID node_id, VLayerID layer_id, uint8 level);
- VNodeID node_id;
- VLayerID layer_id;
- uint8 level;
-
- func_b_layer_subscribe = v_fs_get_user_func(82);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &level);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(level == 255)
- printf("receive: verse_send_b_layer_unsubscribe(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_alias_user_func(82));
- else
- printf("receive: verse_send_b_layer_subscribe(node_id = %u layer_id = %u level = %u ); callback = %p\n", node_id, layer_id, level, v_fs_get_user_func(82));
-#endif
- if(level == 255)
- {
- void (* alias_b_layer_unsubscribe)(void *user_data, VNodeID node_id, VLayerID layer_id);
- alias_b_layer_unsubscribe = v_fs_get_alias_user_func(82);
- if(alias_b_layer_unsubscribe != NULL)
- alias_b_layer_unsubscribe(v_fs_get_alias_user_data(82), node_id, layer_id);
- return buffer_pos;
- }
- if(func_b_layer_subscribe != NULL)
- func_b_layer_subscribe(v_fs_get_user_data(82), node_id, layer_id, level);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_c_node.c b/extern/verse/dist/v_gen_pack_c_node.c
deleted file mode 100644
index b75fa213383..00000000000
--- a/extern/verse/dist/v_gen_pack_c_node.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_c_curve_create(VNodeID node_id, VLayerID curve_id, const char *name, uint8 dimensions)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 128); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_c_curve_create(node_id = %u curve_id = %u name = %s dimensions = %u );\n", node_id, curve_id, name, dimensions);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], dimensions);
- if(node_id == (uint32) ~0u || curve_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_c_curve_destroy(VNodeID node_id, VLayerID curve_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 128); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_c_curve_destroy(node_id = %u curve_id = %u );\n", node_id, curve_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], -1);
- if(node_id == (uint32) ~0u || curve_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_c_curve_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_c_curve_create)(void *user_data, VNodeID node_id, VLayerID curve_id, const char *name, uint8 dimensions);
- VNodeID node_id;
- VLayerID curve_id;
- char name[16];
- uint8 dimensions;
-
- func_c_curve_create = v_fs_get_user_func(128);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &curve_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
- if(buffer_length < 1 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &dimensions);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_c_curve_destroy(node_id = %u curve_id = %u ); callback = %p\n", node_id, curve_id, v_fs_get_alias_user_func(128));
- else
- printf("receive: verse_send_c_curve_create(node_id = %u curve_id = %u name = %s dimensions = %u ); callback = %p\n", node_id, curve_id, name, dimensions, v_fs_get_user_func(128));
-#endif
- if(name[0] == 0)
- {
- void (* alias_c_curve_destroy)(void *user_data, VNodeID node_id, VLayerID curve_id);
- alias_c_curve_destroy = v_fs_get_alias_user_func(128);
- if(alias_c_curve_destroy != NULL)
- alias_c_curve_destroy(v_fs_get_alias_user_data(128), node_id, curve_id);
- return buffer_pos;
- }
- if(func_c_curve_create != NULL)
- func_c_curve_create(v_fs_get_user_data(128), node_id, curve_id, name, dimensions);
-
- return buffer_pos;
-}
-
-void verse_send_c_curve_subscribe(VNodeID node_id, VLayerID curve_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 129); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_c_curve_subscribe(node_id = %u curve_id = %u );\n", node_id, curve_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || curve_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_c_curve_unsubscribe(VNodeID node_id, VLayerID curve_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 129); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_c_curve_unsubscribe(node_id = %u curve_id = %u );\n", node_id, curve_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || curve_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_c_curve_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_c_curve_subscribe)(void *user_data, VNodeID node_id, VLayerID curve_id);
- VNodeID node_id;
- VLayerID curve_id;
- uint8 alias_bool;
-
- func_c_curve_subscribe = v_fs_get_user_func(129);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &curve_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_c_curve_unsubscribe(node_id = %u curve_id = %u ); callback = %p\n", node_id, curve_id, v_fs_get_alias_user_func(129));
- else
- printf("receive: verse_send_c_curve_subscribe(node_id = %u curve_id = %u ); callback = %p\n", node_id, curve_id, v_fs_get_user_func(129));
-#endif
- if(!alias_bool)
- {
- void (* alias_c_curve_unsubscribe)(void *user_data, VNodeID node_id, VLayerID curve_id);
- alias_c_curve_unsubscribe = v_fs_get_alias_user_func(129);
- if(alias_c_curve_unsubscribe != NULL)
- alias_c_curve_unsubscribe(v_fs_get_alias_user_data(129), node_id, curve_id);
- return buffer_pos;
- }
- if(func_c_curve_subscribe != NULL)
- func_c_curve_subscribe(v_fs_get_user_data(129), node_id, curve_id);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_g_node.c b/extern/verse/dist/v_gen_pack_g_node.c
deleted file mode 100644
index 5a70173554d..00000000000
--- a/extern/verse/dist/v_gen_pack_g_node.c
+++ /dev/null
@@ -1,1154 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_g_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_uint, real64 def_real)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 48); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_layer_create(node_id = %u layer_id = %u name = %s type = %u def_uint = %u def_real = %f );\n", node_id, layer_id, name, type, def_uint, def_real);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], def_uint);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], def_real);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_layer_destroy(VNodeID node_id, VLayerID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 48); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_layer_destroy(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_layer_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_g_layer_create)(void *user_data, VNodeID node_id, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_uint, real64 def_real);
- VNodeID node_id;
- VLayerID layer_id;
- char name[16];
- VNGLayerType type;
- uint32 def_uint;
- real64 def_real;
-
- func_g_layer_create = v_fs_get_user_func(48);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
- if(buffer_length < 13 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNGLayerType)enum_temp;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &def_uint);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &def_real);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_g_layer_destroy(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_alias_user_func(48));
- else
- printf("receive: verse_send_g_layer_create(node_id = %u layer_id = %u name = %s type = %u def_uint = %u def_real = %f ); callback = %p\n", node_id, layer_id, name, type, def_uint, def_real, v_fs_get_user_func(48));
-#endif
- if(name[0] == 0)
- {
- void (* alias_g_layer_destroy)(void *user_data, VNodeID node_id, VLayerID layer_id);
- alias_g_layer_destroy = v_fs_get_alias_user_func(48);
- if(alias_g_layer_destroy != NULL)
- alias_g_layer_destroy(v_fs_get_alias_user_data(48), node_id, layer_id);
- return buffer_pos;
- }
- if(func_g_layer_create != NULL)
- func_g_layer_create(v_fs_get_user_data(48), node_id, layer_id, name, (VNGLayerType) type, def_uint, def_real);
-
- return buffer_pos;
-}
-
-void verse_send_g_layer_subscribe(VNodeID node_id, VLayerID layer_id, VNRealFormat type)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 49); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_layer_subscribe(node_id = %u layer_id = %u type = %u );\n", node_id, layer_id, type);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_layer_unsubscribe(VNodeID node_id, VLayerID layer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 49); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_layer_unsubscribe(node_id = %u layer_id = %u );\n", node_id, layer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_layer_subscribe(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_g_layer_subscribe)(void *user_data, VNodeID node_id, VLayerID layer_id, VNRealFormat type);
- VNodeID node_id;
- VLayerID layer_id;
- VNRealFormat type;
-
- func_g_layer_subscribe = v_fs_get_user_func(49);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNRealFormat)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(type > VN_FORMAT_REAL64)
- printf("receive: verse_send_g_layer_unsubscribe(node_id = %u layer_id = %u ); callback = %p\n", node_id, layer_id, v_fs_get_alias_user_func(49));
- else
- printf("receive: verse_send_g_layer_subscribe(node_id = %u layer_id = %u type = %u ); callback = %p\n", node_id, layer_id, type, v_fs_get_user_func(49));
-#endif
- if(type > VN_FORMAT_REAL64)
- {
- void (* alias_g_layer_unsubscribe)(void *user_data, VNodeID node_id, VLayerID layer_id);
- alias_g_layer_unsubscribe = v_fs_get_alias_user_func(49);
- if(alias_g_layer_unsubscribe != NULL)
- alias_g_layer_unsubscribe(v_fs_get_alias_user_data(49), node_id, layer_id);
- return buffer_pos;
- }
- if(func_g_layer_subscribe != NULL)
- func_g_layer_subscribe(v_fs_get_user_data(49), node_id, layer_id, (VNRealFormat) type);
-
- return buffer_pos;
-}
-
-void verse_send_g_vertex_set_xyz_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 x, real32 y, real32 z)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 50); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_set_xyz_real32(node_id = %u layer_id = %u vertex_id = %u x = %f y = %f z = %f );\n", node_id, layer_id, vertex_id, x, y, z);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], x);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], y);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], z);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_vertex_delete_real32(VNodeID node_id, uint32 vertex_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 50); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_delete_real32(node_id = %u vertex_id = %u );\n", node_id, vertex_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], 0);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], V_REAL32_MAX);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], V_REAL32_MAX);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], V_REAL32_MAX);
- if(node_id == (uint32) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_vertex_set_xyz_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_vertex_set_xyz_real32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 x, real32 y, real32 z);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 vertex_id;
- real32 x;
- real32 y;
- real32 z;
-
- func_g_vertex_set_xyz_real32 = v_fs_get_user_func(50);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &vertex_id);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &x);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &y);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &z);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(x == V_REAL32_MAX || y == V_REAL32_MAX || z == V_REAL32_MAX)
- printf("receive: verse_send_g_vertex_delete_real32(node_id = %u vertex_id = %u ); callback = %p\n", node_id, vertex_id, v_fs_get_alias_user_func(50));
- else
- printf("receive: verse_send_g_vertex_set_xyz_real32(node_id = %u layer_id = %u vertex_id = %u x = %f y = %f z = %f ); callback = %p\n", node_id, layer_id, vertex_id, x, y, z, v_fs_get_user_func(50));
-#endif
- if(x == V_REAL32_MAX || y == V_REAL32_MAX || z == V_REAL32_MAX)
- {
- void (* alias_g_vertex_delete_real32)(void *user_data, VNodeID node_id, uint32 vertex_id);
- alias_g_vertex_delete_real32 = v_fs_get_alias_user_func(50);
- if(alias_g_vertex_delete_real32 != NULL)
- alias_g_vertex_delete_real32(v_fs_get_alias_user_data(50), node_id, vertex_id);
- return buffer_pos;
- }
- if(func_g_vertex_set_xyz_real32 != NULL)
- func_g_vertex_set_xyz_real32(v_fs_get_user_data(50), node_id, layer_id, vertex_id, x, y, z);
-
- return buffer_pos;
-}
-
-void verse_send_g_vertex_set_xyz_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 x, real64 y, real64 z)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 51); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_set_xyz_real64(node_id = %u layer_id = %u vertex_id = %u x = %f y = %f z = %f );\n", node_id, layer_id, vertex_id, x, y, z);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], x);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], y);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], z);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_vertex_delete_real64(VNodeID node_id, uint32 vertex_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 51); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_delete_real64(node_id = %u vertex_id = %u );\n", node_id, vertex_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], 0);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- if(node_id == (uint32) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_vertex_set_xyz_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_vertex_set_xyz_real64)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 x, real64 y, real64 z);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 vertex_id;
- real64 x;
- real64 y;
- real64 z;
-
- func_g_vertex_set_xyz_real64 = v_fs_get_user_func(51);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &vertex_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &x);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &y);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &z);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(x == V_REAL64_MAX || y == V_REAL64_MAX || z == V_REAL64_MAX)
- printf("receive: verse_send_g_vertex_delete_real64(node_id = %u vertex_id = %u ); callback = %p\n", node_id, vertex_id, v_fs_get_alias_user_func(51));
- else
- printf("receive: verse_send_g_vertex_set_xyz_real64(node_id = %u layer_id = %u vertex_id = %u x = %f y = %f z = %f ); callback = %p\n", node_id, layer_id, vertex_id, x, y, z, v_fs_get_user_func(51));
-#endif
- if(x == V_REAL64_MAX || y == V_REAL64_MAX || z == V_REAL64_MAX)
- {
- void (* alias_g_vertex_delete_real64)(void *user_data, VNodeID node_id, uint32 vertex_id);
- alias_g_vertex_delete_real64 = v_fs_get_alias_user_func(51);
- if(alias_g_vertex_delete_real64 != NULL)
- alias_g_vertex_delete_real64(v_fs_get_alias_user_data(51), node_id, vertex_id);
- return buffer_pos;
- }
- if(func_g_vertex_set_xyz_real64 != NULL)
- func_g_vertex_set_xyz_real64(v_fs_get_user_data(51), node_id, layer_id, vertex_id, x, y, z);
-
- return buffer_pos;
-}
-
-void verse_send_g_vertex_set_uint32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, uint32 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 52); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_set_uint32(node_id = %u layer_id = %u vertex_id = %u value = %u );\n", node_id, layer_id, vertex_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_vertex_set_uint32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_vertex_set_uint32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, uint32 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 vertex_id;
- uint32 value;
-
- func_g_vertex_set_uint32 = v_fs_get_user_func(52);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &vertex_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_vertex_set_uint32(node_id = %u layer_id = %u vertex_id = %u value = %u ); callback = %p\n", node_id, layer_id, vertex_id, value, v_fs_get_user_func(52));
-#endif
- if(func_g_vertex_set_uint32 != NULL)
- func_g_vertex_set_uint32(v_fs_get_user_data(52), node_id, layer_id, vertex_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_vertex_set_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 53); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_set_real64(node_id = %u layer_id = %u vertex_id = %u value = %f );\n", node_id, layer_id, vertex_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_vertex_set_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_vertex_set_real64)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 vertex_id;
- real64 value;
-
- func_g_vertex_set_real64 = v_fs_get_user_func(53);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &vertex_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_vertex_set_real64(node_id = %u layer_id = %u vertex_id = %u value = %f ); callback = %p\n", node_id, layer_id, vertex_id, value, v_fs_get_user_func(53));
-#endif
- if(func_g_vertex_set_real64 != NULL)
- func_g_vertex_set_real64(v_fs_get_user_data(53), node_id, layer_id, vertex_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_vertex_set_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 54); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_vertex_set_real32(node_id = %u layer_id = %u vertex_id = %u value = %f );\n", node_id, layer_id, vertex_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], vertex_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || vertex_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_vertex_set_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_vertex_set_real32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 vertex_id;
- real32 value;
-
- func_g_vertex_set_real32 = v_fs_get_user_func(54);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &vertex_id);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_vertex_set_real32(node_id = %u layer_id = %u vertex_id = %u value = %f ); callback = %p\n", node_id, layer_id, vertex_id, value, v_fs_get_user_func(54));
-#endif
- if(func_g_vertex_set_real32 != NULL)
- func_g_vertex_set_real32(v_fs_get_user_data(54), node_id, layer_id, vertex_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_corner_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 55); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_corner_uint32(node_id = %u layer_id = %u polygon_id = %u v0 = %u v1 = %u v2 = %u v3 = %u );\n", node_id, layer_id, polygon_id, v0, v1, v2, v3);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], v0);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], v1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], v2);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], v3);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_polygon_delete(VNodeID node_id, uint32 polygon_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 55); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_delete(node_id = %u polygon_id = %u );\n", node_id, polygon_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], 1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- if(node_id == (uint32) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_corner_uint32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_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);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- uint32 v0;
- uint32 v1;
- uint32 v2;
- uint32 v3;
-
- func_g_polygon_set_corner_uint32 = v_fs_get_user_func(55);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &v0);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &v1);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &v2);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &v3);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(layer_id == 1 && v0 == ~0u)
- printf("receive: verse_send_g_polygon_delete(node_id = %u polygon_id = %u ); callback = %p\n", node_id, polygon_id, v_fs_get_alias_user_func(55));
- else
- printf("receive: verse_send_g_polygon_set_corner_uint32(node_id = %u layer_id = %u polygon_id = %u v0 = %u v1 = %u v2 = %u v3 = %u ); callback = %p\n", node_id, layer_id, polygon_id, v0, v1, v2, v3, v_fs_get_user_func(55));
-#endif
- if(layer_id == 1 && v0 == ~0u)
- {
- void (* alias_g_polygon_delete)(void *user_data, VNodeID node_id, uint32 polygon_id);
- alias_g_polygon_delete = v_fs_get_alias_user_func(55);
- if(alias_g_polygon_delete != NULL)
- alias_g_polygon_delete(v_fs_get_alias_user_data(55), node_id, polygon_id);
- return buffer_pos;
- }
- if(func_g_polygon_set_corner_uint32 != NULL)
- func_g_polygon_set_corner_uint32(v_fs_get_user_data(55), node_id, layer_id, polygon_id, v0, v1, v2, v3);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_corner_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 v0, real64 v1, real64 v2, real64 v3)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 56); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_corner_real64(node_id = %u layer_id = %u polygon_id = %u v0 = %f v1 = %f v2 = %f v3 = %f );\n", node_id, layer_id, polygon_id, v0, v1, v2, v3);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], v0);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], v1);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], v2);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], v3);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_corner_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_corner_real64)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 v0, real64 v1, real64 v2, real64 v3);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- real64 v0;
- real64 v1;
- real64 v2;
- real64 v3;
-
- func_g_polygon_set_corner_real64 = v_fs_get_user_func(56);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &v0);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &v1);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &v2);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &v3);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_corner_real64(node_id = %u layer_id = %u polygon_id = %u v0 = %f v1 = %f v2 = %f v3 = %f ); callback = %p\n", node_id, layer_id, polygon_id, v0, v1, v2, v3, v_fs_get_user_func(56));
-#endif
- if(func_g_polygon_set_corner_real64 != NULL)
- func_g_polygon_set_corner_real64(v_fs_get_user_data(56), node_id, layer_id, polygon_id, v0, v1, v2, v3);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_corner_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 v0, real32 v1, real32 v2, real32 v3)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 57); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_corner_real32(node_id = %u layer_id = %u polygon_id = %u v0 = %f v1 = %f v2 = %f v3 = %f );\n", node_id, layer_id, polygon_id, v0, v1, v2, v3);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], v0);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], v1);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], v2);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], v3);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_corner_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_corner_real32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 v0, real32 v1, real32 v2, real32 v3);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- real32 v0;
- real32 v1;
- real32 v2;
- real32 v3;
-
- func_g_polygon_set_corner_real32 = v_fs_get_user_func(57);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &v0);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &v1);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &v2);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &v3);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_corner_real32(node_id = %u layer_id = %u polygon_id = %u v0 = %f v1 = %f v2 = %f v3 = %f ); callback = %p\n", node_id, layer_id, polygon_id, v0, v1, v2, v3, v_fs_get_user_func(57));
-#endif
- if(func_g_polygon_set_corner_real32 != NULL)
- func_g_polygon_set_corner_real32(v_fs_get_user_data(57), node_id, layer_id, polygon_id, v0, v1, v2, v3);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_face_uint8(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint8 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 58); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_face_uint8(node_id = %u layer_id = %u polygon_id = %u value = %u );\n", node_id, layer_id, polygon_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_face_uint8(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_face_uint8)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint8 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- uint8 value;
-
- func_g_polygon_set_face_uint8 = v_fs_get_user_func(58);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_face_uint8(node_id = %u layer_id = %u polygon_id = %u value = %u ); callback = %p\n", node_id, layer_id, polygon_id, value, v_fs_get_user_func(58));
-#endif
- if(func_g_polygon_set_face_uint8 != NULL)
- func_g_polygon_set_face_uint8(v_fs_get_user_data(58), node_id, layer_id, polygon_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_face_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 59); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_face_uint32(node_id = %u layer_id = %u polygon_id = %u value = %u );\n", node_id, layer_id, polygon_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_face_uint32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_face_uint32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- uint32 value;
-
- func_g_polygon_set_face_uint32 = v_fs_get_user_func(59);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_face_uint32(node_id = %u layer_id = %u polygon_id = %u value = %u ); callback = %p\n", node_id, layer_id, polygon_id, value, v_fs_get_user_func(59));
-#endif
- if(func_g_polygon_set_face_uint32 != NULL)
- func_g_polygon_set_face_uint32(v_fs_get_user_data(59), node_id, layer_id, polygon_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_face_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 60); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_face_real64(node_id = %u layer_id = %u polygon_id = %u value = %f );\n", node_id, layer_id, polygon_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_face_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_face_real64)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- real64 value;
-
- func_g_polygon_set_face_real64 = v_fs_get_user_func(60);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_face_real64(node_id = %u layer_id = %u polygon_id = %u value = %f ); callback = %p\n", node_id, layer_id, polygon_id, value, v_fs_get_user_func(60));
-#endif
- if(func_g_polygon_set_face_real64 != NULL)
- func_g_polygon_set_face_real64(v_fs_get_user_data(60), node_id, layer_id, polygon_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_polygon_set_face_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 value)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 61); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_polygon_set_face_real32(node_id = %u layer_id = %u polygon_id = %u value = %f );\n", node_id, layer_id, polygon_id, value);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], polygon_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], value);
- if(node_id == (uint32) ~0u || layer_id == (uint16) ~0u || polygon_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_polygon_set_face_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_polygon_set_face_real32)(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 value);
- VNodeID node_id;
- VLayerID layer_id;
- uint32 polygon_id;
- real32 value;
-
- func_g_polygon_set_face_real32 = v_fs_get_user_func(61);
- if(buffer_length < 10)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &polygon_id);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &value);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_polygon_set_face_real32(node_id = %u layer_id = %u polygon_id = %u value = %f ); callback = %p\n", node_id, layer_id, polygon_id, value, v_fs_get_user_func(61));
-#endif
- if(func_g_polygon_set_face_real32 != NULL)
- func_g_polygon_set_face_real32(v_fs_get_user_data(61), node_id, layer_id, polygon_id, value);
-
- return buffer_pos;
-}
-
-void verse_send_g_crease_set_vertex(VNodeID node_id, const char *layer, uint32 def_crease)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 62); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_crease_set_vertex(node_id = %u layer = %s def_crease = %u );\n", node_id, layer, def_crease);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], layer, 16);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], def_crease);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_crease_set_vertex(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_crease_set_vertex)(void *user_data, VNodeID node_id, const char *layer, uint32 def_crease);
- VNodeID node_id;
- char layer[16];
- uint32 def_crease;
-
- func_g_crease_set_vertex = v_fs_get_user_func(62);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], layer, 16, buffer_length - buffer_pos);
- if(buffer_length < 4 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &def_crease);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_crease_set_vertex(node_id = %u layer = %s def_crease = %u ); callback = %p\n", node_id, layer, def_crease, v_fs_get_user_func(62));
-#endif
- if(func_g_crease_set_vertex != NULL)
- func_g_crease_set_vertex(v_fs_get_user_data(62), node_id, layer, def_crease);
-
- return buffer_pos;
-}
-
-void verse_send_g_crease_set_edge(VNodeID node_id, const char *layer, uint32 def_crease)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 63); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_crease_set_edge(node_id = %u layer = %s def_crease = %u );\n", node_id, layer, def_crease);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], layer, 16);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], def_crease);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_crease_set_edge(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_crease_set_edge)(void *user_data, VNodeID node_id, const char *layer, uint32 def_crease);
- VNodeID node_id;
- char layer[16];
- uint32 def_crease;
-
- func_g_crease_set_edge = v_fs_get_user_func(63);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], layer, 16, buffer_length - buffer_pos);
- if(buffer_length < 4 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &def_crease);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_g_crease_set_edge(node_id = %u layer = %s def_crease = %u ); callback = %p\n", node_id, layer, def_crease, v_fs_get_user_func(63));
-#endif
- if(func_g_crease_set_edge != NULL)
- func_g_crease_set_edge(v_fs_get_user_data(63), node_id, layer, def_crease);
-
- return buffer_pos;
-}
-
-void verse_send_g_bone_create(VNodeID node_id, uint16 bone_id, const char *weight, const char *reference, uint16 parent, real64 pos_x, real64 pos_y, real64 pos_z, const char *position_label, const char *rotation_label, const char *scale_label)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_160);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 64); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_bone_create(node_id = %u bone_id = %u weight = %s reference = %s parent = %u pos_x = %f pos_y = %f pos_z = %f position_label = %s rotation_label = %s scale_label = %s );\n", node_id, bone_id, weight, reference, parent, pos_x, pos_y, pos_z, position_label, rotation_label, scale_label);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], bone_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], weight, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], reference, 16);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], parent);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos_x);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos_y);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos_z);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], position_label, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], rotation_label, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], scale_label, 16);
- if(node_id == (uint32) ~0u || bone_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_g_bone_destroy(VNodeID node_id, uint16 bone_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_160);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 64); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_g_bone_destroy(node_id = %u bone_id = %u );\n", node_id, bone_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], bone_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], V_REAL64_MAX);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- if(node_id == (uint32) ~0u || bone_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_g_bone_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_g_bone_create)(void *user_data, VNodeID node_id, uint16 bone_id, const char *weight, const char *reference, uint16 parent, real64 pos_x, real64 pos_y, real64 pos_z, const char *position_label, const char *rotation_label, const char *scale_label);
- VNodeID node_id;
- uint16 bone_id;
- char weight[16];
- char reference[16];
- uint16 parent;
- real64 pos_x;
- real64 pos_y;
- real64 pos_z;
- char position_label[16];
- char rotation_label[16];
- char scale_label[16];
-
- func_g_bone_create = v_fs_get_user_func(64);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &bone_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], weight, 16, buffer_length - buffer_pos);
- if(buffer_length < 0 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], reference, 16, buffer_length - buffer_pos);
- if(buffer_length < 26 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &parent);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &pos_x);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &pos_y);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &pos_z);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], position_label, 16, buffer_length - buffer_pos);
- if(buffer_length < 0 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], rotation_label, 16, buffer_length - buffer_pos);
- if(buffer_length < 0 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], scale_label, 16, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(weight[0] == 0)
- printf("receive: verse_send_g_bone_destroy(node_id = %u bone_id = %u ); callback = %p\n", node_id, bone_id, v_fs_get_alias_user_func(64));
- else
- printf("receive: verse_send_g_bone_create(node_id = %u bone_id = %u weight = %s reference = %s parent = %u pos_x = %f pos_y = %f pos_z = %f position_label = %s rotation_label = %s scale_label = %s ); callback = %p\n", node_id, bone_id, weight, reference, parent, pos_x, pos_y, pos_z, position_label, rotation_label, scale_label, v_fs_get_user_func(64));
-#endif
- if(weight[0] == 0)
- {
- void (* alias_g_bone_destroy)(void *user_data, VNodeID node_id, uint16 bone_id);
- alias_g_bone_destroy = v_fs_get_alias_user_func(64);
- if(alias_g_bone_destroy != NULL)
- alias_g_bone_destroy(v_fs_get_alias_user_data(64), node_id, bone_id);
- return buffer_pos;
- }
- if(func_g_bone_create != NULL)
- func_g_bone_create(v_fs_get_user_data(64), node_id, bone_id, weight, reference, parent, pos_x, pos_y, pos_z, position_label, rotation_label, scale_label);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_init.c b/extern/verse/dist/v_gen_pack_init.c
deleted file mode 100644
index e568cb989cb..00000000000
--- a/extern/verse/dist/v_gen_pack_init.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-#include "v_gen_unpack_func.h"
-
-#include "verse.h"
-
-
-extern void verse_send_packet_ack(uint32 packet_id);
-extern void verse_send_packet_nak(uint32 packet_id);
-
-void init_pack_and_unpack(void)
-{
- v_fs_add_func(0, v_unpack_connect, (void *) verse_send_connect, NULL);
- v_fs_add_func(1, v_unpack_connect_accept, (void *) verse_send_connect_accept, NULL);
- v_fs_add_func(2, v_unpack_connect_terminate, (void *) verse_send_connect_terminate, NULL);
- v_fs_add_func(5, v_unpack_ping, (void *) verse_send_ping, NULL);
- v_fs_add_func(7, v_unpack_packet_ack, verse_send_packet_ack, NULL);
- v_fs_add_func(8, v_unpack_packet_nak, verse_send_packet_nak, NULL);
- v_fs_add_func(9, v_unpack_node_index_subscribe, verse_send_node_index_subscribe, NULL);
- v_fs_add_func(10, v_unpack_node_create, verse_send_node_create, verse_send_node_destroy);
- v_fs_add_func(11, v_unpack_node_subscribe, verse_send_node_subscribe, verse_send_node_unsubscribe);
- v_fs_add_func(16, v_unpack_tag_group_create, verse_send_tag_group_create, verse_send_tag_group_destroy);
- v_fs_add_func(17, v_unpack_tag_group_subscribe, verse_send_tag_group_subscribe, verse_send_tag_group_unsubscribe);
- v_fs_add_func(18, v_unpack_tag_create, verse_send_tag_create, verse_send_tag_destroy);
- v_fs_add_func(19, v_unpack_node_name_set, verse_send_node_name_set, NULL);
- v_fs_add_func(32, v_unpack_o_transform_pos_real32, verse_send_o_transform_pos_real32, NULL);
- v_fs_add_func(33, v_unpack_o_transform_rot_real32, verse_send_o_transform_rot_real32, NULL);
- v_fs_add_func(34, v_unpack_o_transform_scale_real32, verse_send_o_transform_scale_real32, NULL);
- v_fs_add_func(35, v_unpack_o_transform_pos_real64, verse_send_o_transform_pos_real64, NULL);
- v_fs_add_func(36, v_unpack_o_transform_rot_real64, verse_send_o_transform_rot_real64, NULL);
- v_fs_add_func(37, v_unpack_o_transform_scale_real64, verse_send_o_transform_scale_real64, NULL);
- v_fs_add_func(38, v_unpack_o_transform_subscribe, verse_send_o_transform_subscribe, verse_send_o_transform_unsubscribe);
- v_fs_add_func(39, v_unpack_o_light_set, verse_send_o_light_set, NULL);
- v_fs_add_func(40, v_unpack_o_link_set, verse_send_o_link_set, verse_send_o_link_destroy);
- v_fs_add_func(41, v_unpack_o_method_group_create, verse_send_o_method_group_create, verse_send_o_method_group_destroy);
- v_fs_add_func(42, v_unpack_o_method_group_subscribe, verse_send_o_method_group_subscribe, verse_send_o_method_group_unsubscribe);
- v_fs_add_func(43, v_unpack_o_method_create, verse_send_o_method_create, verse_send_o_method_destroy);
- v_fs_add_func(44, v_unpack_o_method_call, verse_send_o_method_call, NULL);
- v_fs_add_func(45, v_unpack_o_anim_run, verse_send_o_anim_run, NULL);
- v_fs_add_func(46, v_unpack_o_hide, verse_send_o_hide, NULL);
- v_fs_add_func(48, v_unpack_g_layer_create, verse_send_g_layer_create, verse_send_g_layer_destroy);
- v_fs_add_func(49, v_unpack_g_layer_subscribe, verse_send_g_layer_subscribe, verse_send_g_layer_unsubscribe);
- v_fs_add_func(50, v_unpack_g_vertex_set_xyz_real32, verse_send_g_vertex_set_xyz_real32, verse_send_g_vertex_delete_real32);
- v_fs_add_func(51, v_unpack_g_vertex_set_xyz_real64, verse_send_g_vertex_set_xyz_real64, verse_send_g_vertex_delete_real64);
- v_fs_add_func(52, v_unpack_g_vertex_set_uint32, verse_send_g_vertex_set_uint32, NULL);
- v_fs_add_func(53, v_unpack_g_vertex_set_real64, verse_send_g_vertex_set_real64, NULL);
- v_fs_add_func(54, v_unpack_g_vertex_set_real32, verse_send_g_vertex_set_real32, NULL);
- v_fs_add_func(55, v_unpack_g_polygon_set_corner_uint32, verse_send_g_polygon_set_corner_uint32, verse_send_g_polygon_delete);
- v_fs_add_func(56, v_unpack_g_polygon_set_corner_real64, verse_send_g_polygon_set_corner_real64, NULL);
- v_fs_add_func(57, v_unpack_g_polygon_set_corner_real32, verse_send_g_polygon_set_corner_real32, NULL);
- v_fs_add_func(58, v_unpack_g_polygon_set_face_uint8, verse_send_g_polygon_set_face_uint8, NULL);
- v_fs_add_func(59, v_unpack_g_polygon_set_face_uint32, verse_send_g_polygon_set_face_uint32, NULL);
- v_fs_add_func(60, v_unpack_g_polygon_set_face_real64, verse_send_g_polygon_set_face_real64, NULL);
- v_fs_add_func(61, v_unpack_g_polygon_set_face_real32, verse_send_g_polygon_set_face_real32, NULL);
- v_fs_add_func(62, v_unpack_g_crease_set_vertex, verse_send_g_crease_set_vertex, NULL);
- v_fs_add_func(63, v_unpack_g_crease_set_edge, verse_send_g_crease_set_edge, NULL);
- v_fs_add_func(64, v_unpack_g_bone_create, verse_send_g_bone_create, verse_send_g_bone_destroy);
- v_fs_add_func(68, v_unpack_m_fragment_create, verse_send_m_fragment_create, verse_send_m_fragment_destroy);
- v_fs_add_func(80, v_unpack_b_dimensions_set, verse_send_b_dimensions_set, NULL);
- v_fs_add_func(81, v_unpack_b_layer_create, verse_send_b_layer_create, verse_send_b_layer_destroy);
- v_fs_add_func(82, v_unpack_b_layer_subscribe, verse_send_b_layer_subscribe, verse_send_b_layer_unsubscribe);
- v_fs_add_func(83, v_unpack_b_tile_set, (void *) verse_send_b_tile_set, NULL);
- v_fs_add_func(96, v_unpack_t_language_set, verse_send_t_language_set, NULL);
- v_fs_add_func(97, v_unpack_t_buffer_create, verse_send_t_buffer_create, verse_send_t_buffer_destroy);
- v_fs_add_func(98, v_unpack_t_buffer_subscribe, verse_send_t_buffer_subscribe, verse_send_t_buffer_unsubscribe);
- v_fs_add_func(99, v_unpack_t_text_set, (void *) verse_send_t_text_set, NULL);
- v_fs_add_func(128, v_unpack_c_curve_create, verse_send_c_curve_create, verse_send_c_curve_destroy);
- v_fs_add_func(129, v_unpack_c_curve_subscribe, verse_send_c_curve_subscribe, verse_send_c_curve_unsubscribe);
- v_fs_add_func(130, v_unpack_c_key_set, (void *) verse_send_c_key_set, (void *) verse_send_c_key_destroy);
- v_fs_add_func(160, v_unpack_a_buffer_create, verse_send_a_buffer_create, verse_send_a_buffer_destroy);
- v_fs_add_func(161, v_unpack_a_buffer_subscribe, verse_send_a_buffer_subscribe, verse_send_a_buffer_unsubscribe);
- v_fs_add_func(162, v_unpack_a_block_set, verse_send_a_block_set, verse_send_a_block_clear);
- v_fs_add_func(163, v_unpack_a_stream_create, verse_send_a_stream_create, verse_send_a_stream_destroy);
- v_fs_add_func(164, v_unpack_a_stream_subscribe, verse_send_a_stream_subscribe, verse_send_a_stream_unsubscribe);
- v_fs_add_func(165, v_unpack_a_stream, verse_send_a_stream, NULL);
-}
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_m_node.c b/extern/verse/dist/v_gen_pack_m_node.c
deleted file mode 100644
index 376b6c51c39..00000000000
--- a/extern/verse/dist/v_gen_pack_m_node.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_m_fragment_create(VNodeID node_id, VNMFragmentID frag_id, VNMFragmentType type, const VMatFrag *fragment)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 68); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_m_fragment_create(node_id = %u frag_id = %u type = %u fragment = %p );\n", node_id, frag_id, type, fragment);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], frag_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- switch(type)
- {
- case VN_M_FT_COLOR :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.red);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.green);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->color.blue);
- break;
- case VN_M_FT_LIGHT :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->light.type);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->light.normal_falloff);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], fragment->light.brdf);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_r, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_g, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->light.brdf_b, 16);
- break;
- case VN_M_FT_REFLECTION :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->reflection.normal_falloff);
- break;
- case VN_M_FT_TRANSPARENCY :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->transparency.normal_falloff);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->transparency.refraction_index);
- break;
- case VN_M_FT_GEOMETRY :
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_r, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_g, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->geometry.layer_b, 16);
- break;
- case VN_M_FT_VOLUME :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.diffusion);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_r);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_g);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->volume.col_b);
- break;
- case VN_M_FT_VIEW :
- break;
- case VN_M_FT_TEXTURE :
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], fragment->texture.bitmap);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_r, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_g, 16);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->texture.layer_b, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->texture.filtered);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->texture.mapping);
- break;
- case VN_M_FT_NOISE :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->noise.type);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->noise.mapping);
- break;
- case VN_M_FT_BLENDER :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->blender.type);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.data_a);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.data_b);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->blender.control);
- break;
- case VN_M_FT_CLAMP :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->clamp.min);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.red);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.green);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->clamp.blue);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->clamp.data);
- break;
- case VN_M_FT_MATRIX :
- {
- unsigned int i;
- for(i = 0; i < 16; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->matrix.matrix[i]);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->matrix.data);
- }
- break;
- case VN_M_FT_RAMP :
- if(fragment->ramp.point_count == 0)
- return;
- {
- unsigned int i, pos;
- double last;
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->ramp.type);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)fragment->ramp.channel);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->ramp.mapping);
- pos = buffer_pos;
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], fragment->ramp.point_count);
- last = fragment->ramp.ramp[0].pos - 1;
- for(i = 0; i < fragment->ramp.point_count && fragment->ramp.ramp[i].pos > last && i < 48; i++)
- {
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].pos);
- last = fragment->ramp.ramp[i].pos;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].red);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].green);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], fragment->ramp.ramp[i].blue);
- }
- if(i != fragment->ramp.point_count)
- vnp_raw_pack_uint8(&buf[pos], i);
- }
- break;
- case VN_M_FT_ANIMATION :
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->animation.label, 16);
- break;
- case VN_M_FT_ALTERNATIVE :
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->alternative.alt_a);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->alternative.alt_b);
- break;
- case VN_M_FT_OUTPUT :
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], fragment->output.label, 16);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->output.front);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], fragment->output.back);
- break;
- }
- if(node_id == (uint32) ~0u || frag_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_m_fragment_destroy(VNodeID node_id, VNMFragmentID frag_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 68); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_m_fragment_destroy(node_id = %u frag_id = %u );\n", node_id, frag_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], frag_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u || frag_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_m_fragment_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_m_fragment_create)(void *user_data, VNodeID node_id, VNMFragmentID frag_id, VNMFragmentType type, const VMatFrag *fragment);
- VNodeID node_id;
- VNMFragmentID frag_id;
- VNMFragmentType type;
- const VMatFrag *fragment;
-
- func_m_fragment_create = v_fs_get_user_func(68);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNMFragmentType)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(type > VN_M_FT_OUTPUT)
- printf("receive: verse_send_m_fragment_destroy(node_id = %u frag_id = %u ); callback = %p\n", node_id, frag_id, v_fs_get_alias_user_func(68));
- else
- printf("receive: verse_send_m_fragment_create(node_id = %u frag_id = %u type = %u ); callback = %p\n", node_id, frag_id, type, v_fs_get_user_func(68));
-#endif
- if(type <= VN_M_FT_OUTPUT)
- {
- VMatFrag frag;
- uint8 temp;
- switch(type)
- {
- case VN_M_FT_COLOR :
- if(buffer_pos + 3 * 8 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.red);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.green);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.color.blue);
- break;
- case VN_M_FT_LIGHT :
- if(buffer_pos + 13 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.light.type = (VNMLightType)temp;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.light.normal_falloff);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &frag.light.brdf);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_r, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_g, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.light.brdf_b, 16, buffer_length - buffer_pos);
- break;
- case VN_M_FT_REFLECTION :
- if(buffer_pos + 8 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.reflection.normal_falloff);
- break;
- case VN_M_FT_TRANSPARENCY :
- if(buffer_pos + 16 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.transparency.normal_falloff);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.transparency.refraction_index);
- break;
- case VN_M_FT_VOLUME :
- if(buffer_pos + 32 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.diffusion);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_r);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_g);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.volume.col_b);
- break;
- case VN_M_FT_VIEW :
- break;
- case VN_M_FT_GEOMETRY :
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_r, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_g, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.geometry.layer_b, 16, buffer_length - buffer_pos);
- break;
- case VN_M_FT_TEXTURE :
- if(buffer_pos + 10 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &frag.texture.bitmap);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_r, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_g, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.texture.layer_b, 16, buffer_length - buffer_pos);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.texture.filtered = (VNMNoiseType)temp;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.texture.mapping);
- break;
- case VN_M_FT_NOISE :
- if(buffer_pos + 3 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.noise.type = (VNMNoiseType)temp;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.noise.mapping);
- break;
- case VN_M_FT_BLENDER :
- if(buffer_pos + 7 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.blender.type = (VNMBlendType)temp;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.data_a);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.data_b);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.blender.control);
- break;
- case VN_M_FT_CLAMP :
- if(buffer_pos + 27 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.clamp.min = (VNMBlendType)temp;
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.red);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.green);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.clamp.blue);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.clamp.data);
- break;
- case VN_M_FT_MATRIX :
- if(buffer_pos + 8 * 16 + 2 > buffer_length)
- return -1;
- else
- {
- unsigned int i;
- for(i = 0; i < 16; i++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.matrix.matrix[i]);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.matrix.data);
- }
- break;
- case VN_M_FT_RAMP :
- if(buffer_pos + 5 + 4 * 8 > buffer_length)
- return -1;
- else
- {
- unsigned int i, pos;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.ramp.type = (VNMRampType)temp;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &temp);
- frag.ramp.channel = (VNMRampChannel)temp;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.ramp.mapping);
- pos = buffer_pos;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &frag.ramp.point_count);
- for(i = 0; i < frag.ramp.point_count && buffer_pos + 8 * 4 <= buffer_length && i < 48; i++)
- {
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].pos);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].red);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].green);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.ramp.ramp[i].blue);
- }if(i != frag.ramp.point_count)
- frag.ramp.point_count = i;
- }
- break;
- case VN_M_FT_ANIMATION :
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.animation.label, 16, buffer_length - buffer_pos);
- break;
- case VN_M_FT_ALTERNATIVE :
- if(buffer_pos + 4 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.alternative.alt_a);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.alternative.alt_b);
- break;
- case VN_M_FT_OUTPUT :
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], frag.output.label, 16, buffer_length - buffer_pos);
- if(buffer_pos + 4 > buffer_length)
- return -1;
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.output.front);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &frag.output.back);
- break;
- }
- if(func_m_fragment_create != NULL)
- func_m_fragment_create(v_fs_get_user_data(68), node_id, frag_id, type, &frag);
- return buffer_pos;
- }
-
- if(type > VN_M_FT_OUTPUT)
- {
- void (* alias_m_fragment_destroy)(void *user_data, VNodeID node_id, VNMFragmentID frag_id);
- alias_m_fragment_destroy = v_fs_get_alias_user_func(68);
- if(alias_m_fragment_destroy != NULL)
- alias_m_fragment_destroy(v_fs_get_alias_user_data(68), node_id, frag_id);
- return buffer_pos;
- }
- if(func_m_fragment_create != NULL)
- func_m_fragment_create(v_fs_get_user_data(68), node_id, frag_id, (VNMFragmentType) type, fragment);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_o_node.c b/extern/verse/dist/v_gen_pack_o_node.c
deleted file mode 100644
index 5d60bafe1d0..00000000000
--- a/extern/verse/dist/v_gen_pack_o_node.c
+++ /dev/null
@@ -1,1297 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_o_transform_pos_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const real32 *pos, const real32 *speed, const real32 *accelerate, const real32 *drag_normal, real32 drag)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 32); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_pos_real32(node_id = %u time_s = %u time_f = %u pos = %p speed = %p accelerate = %p drag_normal = %p drag = %f );\n", node_id, time_s, time_f, pos, speed, accelerate, drag_normal, drag);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- {
- unsigned char mask = 0;
- unsigned int cmd;
- cmd = buffer_pos++;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[0]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[1]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], pos[2]);
- if(speed != NULL && (speed[0] > 0.0000001 || speed[0] < -0.0000001 || speed[1] > 0.0000001 || speed[1] < -0.0000001 || speed[2] > 0.0000001 || speed[2] < -0.0000001))
- {
- mask |= 1;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[0]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[1]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], speed[2]);
- }
- if(accelerate != NULL && (accelerate[0] > 0.0000001 || accelerate[0] < -0.0000001 || accelerate[1] > 0.0000001 || accelerate[1] < -0.0000001 || accelerate[2] > 0.0000001 || accelerate[2] < -0.0000001))
- {
- mask |= 2;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[0]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[1]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], accelerate[2]);
- }
- if(drag_normal != NULL && (drag > 0.0000001 || drag < -0.0000001) && (drag_normal[0] > 0.0000001 || drag_normal[0] < -0.0000001 || drag_normal[1] > 0.0000001 || drag_normal[1] < -0.0000001 || drag_normal[2] > 0.0000001 || drag_normal[2] < -0.0000001))
- {
- mask |= 4;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[0]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[1]);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag_normal[2]);
- }
- if(drag > 0.0000001 || drag < -0.0000001)
- {
- mask |= 8;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);
- }
- vnp_raw_pack_uint8(&buf[cmd], mask);
- }if(FALSE)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_pos_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_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);
- VNodeID node_id;
- uint32 time_s;
- uint32 time_f;
- const real32 *pos;
- const real32 *speed;
- const real32 *accelerate;
- const real32 *drag_normal;
- real32 drag;
-
- func_o_transform_pos_real32 = v_fs_get_user_func(32);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_pos_real32(node_id = %u time_s = %u time_f = %u drag = %f ); callback = %p\n", node_id, time_s, time_f, drag, v_fs_get_user_func(32));
-#endif
- {
- float output[4][3];
- unsigned int i, j;
- char mask, pow = 1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &output[0][j]);
- for(i = 1; i < 4; i++)
- {
- if((mask & pow) != 0)
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &output[i][j]);
- else
- for(j = 0; j < 3; j++)
- output[i][j] = 0;
- pow *= 2;
- }
- if((mask & pow) != 0)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &drag);
- else
- drag = 0.0f;
- if(func_o_transform_pos_real32 != NULL)
- func_o_transform_pos_real32(v_fs_get_user_data(32), node_id, time_s, time_f, &output[0][0], &output[1][0], &output[2][0], &output[3][0], drag);
- return buffer_pos;
- }
-
- if(func_o_transform_pos_real32 != NULL)
- func_o_transform_pos_real32(v_fs_get_user_data(32), node_id, time_s, time_f, pos, speed, accelerate, drag_normal, drag);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_rot_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *rot, const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 33); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_rot_real32(node_id = %u time_s = %u time_f = %u rot = %p speed = %p accelerate = %p drag_normal = %p drag = %f );\n", node_id, time_s, time_f, rot, speed, accelerate, drag_normal, drag);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- {
- uint8 mask = 0;
- unsigned int maskpos;
- maskpos = buffer_pos++; /* Remember location, and reserve a byte for the mask. */
- buffer_pos += vnp_pack_quat32(&buf[buffer_pos], rot);
- if(v_quat32_valid(speed))
- {
- mask |= 1;
- buffer_pos += vnp_pack_quat32(&buf[buffer_pos], speed);
- }
- if(v_quat32_valid(accelerate))
- {
- mask |= 2;
- buffer_pos += vnp_pack_quat32(&buf[buffer_pos], accelerate);
- }
- if(v_quat32_valid(drag_normal))
- {
- mask |= 4;
- buffer_pos += vnp_pack_quat32(&buf[buffer_pos], drag_normal);
- }
- if(drag > 0.0000001 || drag < -0.0000001)
- {
- mask |= 8;
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);
- }
- vnp_raw_pack_uint8(&buf[maskpos], mask); /* Write the mask into start of command. */
- }
- if(FALSE)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], drag);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_rot_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_transform_rot_real32)(void *user_data, VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *rot, const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag);
- VNodeID node_id;
- uint32 time_s;
- uint32 time_f;
- const VNQuat32 *rot;
- const VNQuat32 *speed;
- const VNQuat32 *accelerate;
- const VNQuat32 *drag_normal;
- real32 drag;
-
- func_o_transform_rot_real32 = v_fs_get_user_func(33);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_rot_real32(node_id = %u time_s = %u time_f = %u drag = %f ); callback = %p\n", node_id, time_s, time_f, drag, v_fs_get_user_func(33));
-#endif
- {
- VNQuat32 trot, temp[3], *q[3];
- unsigned int i;
- uint8 mask, test;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);
- buffer_pos += vnp_unpack_quat32(&buf[buffer_pos], &trot);
- for(i = 0, test = 1; i < sizeof temp / sizeof *temp; i++, test <<= 1)
- {
- if(mask & test) /* Field present? */
- {
- buffer_pos += vnp_unpack_quat32(&buf[buffer_pos], &temp[i]);
- q[i] = &temp[i];
- }
- else
- q[i] = NULL;
- }
- if(mask & test)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &drag);
- else
- drag = 0.0;
- if(func_o_transform_rot_real32 != NULL)
- func_o_transform_rot_real32(v_fs_get_user_data(33), node_id, time_s, time_f, &trot, q[0], q[1], q[2], drag);
- return buffer_pos;
- }
-
- if(func_o_transform_rot_real32 != NULL)
- func_o_transform_rot_real32(v_fs_get_user_data(33), node_id, time_s, time_f, rot, speed, accelerate, drag_normal, drag);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_scale_real32(VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_20);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 34); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_scale_real32(node_id = %u scale_x = %f scale_y = %f scale_z = %f );\n", node_id, scale_x, scale_y, scale_z);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], scale_x);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], scale_y);
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], scale_z);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_scale_real32(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_transform_scale_real32)(void *user_data, VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z);
- VNodeID node_id;
- real32 scale_x;
- real32 scale_y;
- real32 scale_z;
-
- func_o_transform_scale_real32 = v_fs_get_user_func(34);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &scale_x);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &scale_y);
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &scale_z);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_scale_real32(node_id = %u scale_x = %f scale_y = %f scale_z = %f ); callback = %p\n", node_id, scale_x, scale_y, scale_z, v_fs_get_user_func(34));
-#endif
- if(func_o_transform_scale_real32 != NULL)
- func_o_transform_scale_real32(v_fs_get_user_data(34), node_id, scale_x, scale_y, scale_z);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_pos_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const real64 *pos, const real64 *speed, const real64 *accelerate, const real64 *drag_normal, real64 drag)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 35); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_pos_real64(node_id = %u time_s = %u time_f = %u pos = %p speed = %p accelerate = %p drag_normal = %p drag = %f );\n", node_id, time_s, time_f, pos, speed, accelerate, drag_normal, drag);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- {
- unsigned char mask = 0;
- unsigned int cmd;
- cmd = buffer_pos++;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[0]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[1]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[2]);
- if(speed != NULL && (speed[0] > 0.0000001 || speed[0] < -0.0000001 || speed[1] > 0.0000001 || speed[1] < -0.0000001 || speed[2] > 0.0000001 || speed[2] < -0.0000001))
- {
- mask |= 1;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[0]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[1]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[2]);
- }
- if(accelerate != NULL && (accelerate[0] > 0.0000001 || accelerate[0] < -0.0000001 || accelerate[1] > 0.0000001 || accelerate[1] < -0.0000001 || accelerate[2] > 0.0000001 || accelerate[2] < -0.0000001))
- {
- mask |= 2;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[0]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[1]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accelerate[2]);
- }
- if(drag_normal != NULL && (drag > 0.0000001 || drag < -0.0000001) && (drag_normal[0] > 0.0000001 || drag_normal[0] < -0.0000001 || drag_normal[1] > 0.0000001 || drag_normal[1] < -0.0000001 || drag_normal[2] > 0.0000001 || drag_normal[2] < -0.0000001))
- {
- mask |= 4;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[0]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[1]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag_normal[2]);
- }
- if(drag > 0.0000001 || drag < -0.0000001)
- {
- mask |= 8;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);
- }
- vnp_raw_pack_uint8(&buf[cmd], mask);
- }if(FALSE)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_pos_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_transform_pos_real64)(void *user_data, VNodeID node_id, uint32 time_s, uint32 time_f, const real64 *pos, const real64 *speed, const real64 *accelerate, const real64 *drag_normal, real64 drag);
- VNodeID node_id;
- uint32 time_s;
- uint32 time_f;
- const real64 *pos;
- const real64 *speed;
- const real64 *accelerate;
- const real64 *drag_normal;
- real64 drag;
-
- func_o_transform_pos_real64 = v_fs_get_user_func(35);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_pos_real64(node_id = %u time_s = %u time_f = %u drag = %f ); callback = %p\n", node_id, time_s, time_f, drag, v_fs_get_user_func(35));
-#endif
- {
- double output[4][3];
- unsigned int i, j;
- char mask, pow = 1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[0][j]);
- for(i = 1; i < 4; i++)
- {
- if((mask & pow) != 0)
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[i][j]);
- else
- for(j = 0; j < 3; j++)
- output[i][j] = 0;
- pow *= 2;
- }
- if((mask & pow) != 0)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &drag);
- else
- drag = 0.0;
- if(func_o_transform_pos_real64 != NULL)
- func_o_transform_pos_real64(v_fs_get_user_data(35), node_id, time_s, time_f, &output[0][0], &output[1][0], &output[2][0], &output[3][0], drag);
- return buffer_pos;
- }
-
- if(func_o_transform_pos_real64 != NULL)
- func_o_transform_pos_real64(v_fs_get_user_data(35), node_id, time_s, time_f, pos, speed, accelerate, drag_normal, drag);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_rot_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat64 *rot, const VNQuat64 *speed, const VNQuat64 *accelerate, const VNQuat64 *drag_normal, real64 drag)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 36); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_rot_real64(node_id = %u time_s = %u time_f = %u rot = %p speed = %p accelerate = %p drag_normal = %p drag = %f );\n", node_id, time_s, time_f, rot, speed, accelerate, drag_normal, drag);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- {
- uint8 mask = 0;
- unsigned int maskpos;
- maskpos = buffer_pos++; /* Remember location, and reserve a byte for the mask. */
- buffer_pos += vnp_pack_quat64(&buf[buffer_pos], rot);
- if(v_quat64_valid(speed))
- {
- mask |= 1;
- buffer_pos += vnp_pack_quat64(&buf[buffer_pos], speed);
- }
- if(v_quat64_valid(accelerate))
- {
- mask |= 2;
- buffer_pos += vnp_pack_quat64(&buf[buffer_pos], accelerate);
- }
- if(v_quat64_valid(drag_normal))
- {
- mask |= 4;
- buffer_pos += vnp_pack_quat64(&buf[buffer_pos], drag_normal);
- }
- if(drag > 0.0000001 || drag < -0.0000001)
- {
- mask |= 8;
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);
- }
- vnp_raw_pack_uint8(&buf[maskpos], mask); /* Write the mask into start of command. */
- }
- if(FALSE)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], drag);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_rot_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_transform_rot_real64)(void *user_data, VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat64 *rot, const VNQuat64 *speed, const VNQuat64 *accelerate, const VNQuat64 *drag_normal, real64 drag);
- VNodeID node_id;
- uint32 time_s;
- uint32 time_f;
- const VNQuat64 *rot;
- const VNQuat64 *speed;
- const VNQuat64 *accelerate;
- const VNQuat64 *drag_normal;
- real64 drag;
-
- func_o_transform_rot_real64 = v_fs_get_user_func(36);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_rot_real64(node_id = %u time_s = %u time_f = %u drag = %f ); callback = %p\n", node_id, time_s, time_f, drag, v_fs_get_user_func(36));
-#endif
- {
- VNQuat64 trot, temp[3], *q[3];
- unsigned int i;
- uint8 mask, test;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);
- buffer_pos += vnp_unpack_quat64(&buf[buffer_pos], &trot);
- for(i = 0, test = 1; i < sizeof temp / sizeof *temp; i++, test <<= 1)
- {
- if(mask & test) /* Field present? */
- {
- buffer_pos += vnp_unpack_quat64(&buf[buffer_pos], &temp[i]);
- q[i] = &temp[i];
- }
- else
- q[i] = NULL;
- }
- if(mask & test)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &drag);
- else
- drag = 0.0;
- if(func_o_transform_rot_real64 != NULL)
- func_o_transform_rot_real64(v_fs_get_user_data(36), node_id, time_s, time_f, &trot, q[0], q[1], q[2], drag);
- return buffer_pos;
- }
-
- if(func_o_transform_rot_real64 != NULL)
- func_o_transform_rot_real64(v_fs_get_user_data(36), node_id, time_s, time_f, rot, speed, accelerate, drag_normal, drag);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_scale_real64(VNodeID node_id, real64 scale_x, real64 scale_y, real64 scale_z)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 37); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_scale_real64(node_id = %u scale_x = %f scale_y = %f scale_z = %f );\n", node_id, scale_x, scale_y, scale_z);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale_x);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale_y);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale_z);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_scale_real64(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_transform_scale_real64)(void *user_data, VNodeID node_id, real64 scale_x, real64 scale_y, real64 scale_z);
- VNodeID node_id;
- real64 scale_x;
- real64 scale_y;
- real64 scale_z;
-
- func_o_transform_scale_real64 = v_fs_get_user_func(37);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &scale_x);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &scale_y);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &scale_z);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_transform_scale_real64(node_id = %u scale_x = %f scale_y = %f scale_z = %f ); callback = %p\n", node_id, scale_x, scale_y, scale_z, v_fs_get_user_func(37));
-#endif
- if(func_o_transform_scale_real64 != NULL)
- func_o_transform_scale_real64(v_fs_get_user_data(37), node_id, scale_x, scale_y, scale_z);
-
- return buffer_pos;
-}
-
-void verse_send_o_transform_subscribe(VNodeID node_id, VNRealFormat type)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 38); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_subscribe(node_id = %u type = %u );\n", node_id, type);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_o_transform_unsubscribe(VNodeID node_id, VNRealFormat type)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 38); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_transform_unsubscribe(node_id = %u type = %u );\n", node_id, type);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_transform_subscribe(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_o_transform_subscribe)(void *user_data, VNodeID node_id, VNRealFormat type);
- VNodeID node_id;
- VNRealFormat type;
- uint8 alias_bool;
-
- func_o_transform_subscribe = v_fs_get_user_func(38);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNRealFormat)enum_temp;
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_o_transform_unsubscribe(node_id = %u type = %u ); callback = %p\n", node_id, type, v_fs_get_alias_user_func(38));
- else
- printf("receive: verse_send_o_transform_subscribe(node_id = %u type = %u ); callback = %p\n", node_id, type, v_fs_get_user_func(38));
-#endif
- if(!alias_bool)
- {
- void (* alias_o_transform_unsubscribe)(void *user_data, VNodeID node_id, VNRealFormat type);
- alias_o_transform_unsubscribe = v_fs_get_alias_user_func(38);
- if(alias_o_transform_unsubscribe != NULL)
- alias_o_transform_unsubscribe(v_fs_get_alias_user_data(38), node_id, (VNRealFormat)type);
- return buffer_pos;
- }
- if(func_o_transform_subscribe != NULL)
- func_o_transform_subscribe(v_fs_get_user_data(38), node_id, (VNRealFormat) type);
-
- return buffer_pos;
-}
-
-void verse_send_o_light_set(VNodeID node_id, real64 light_r, real64 light_g, real64 light_b)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 39); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_light_set(node_id = %u light_r = %f light_g = %f light_b = %f );\n", node_id, light_r, light_g, light_b);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], light_r);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], light_g);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], light_b);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_light_set(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_light_set)(void *user_data, VNodeID node_id, real64 light_r, real64 light_g, real64 light_b);
- VNodeID node_id;
- real64 light_r;
- real64 light_g;
- real64 light_b;
-
- func_o_light_set = v_fs_get_user_func(39);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &light_r);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &light_g);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &light_b);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_light_set(node_id = %u light_r = %f light_g = %f light_b = %f ); callback = %p\n", node_id, light_r, light_g, light_b, v_fs_get_user_func(39));
-#endif
- if(func_o_light_set != NULL)
- func_o_light_set(v_fs_get_user_data(39), node_id, light_r, light_g, light_b);
-
- return buffer_pos;
-}
-
-void verse_send_o_link_set(VNodeID node_id, uint16 link_id, VNodeID link, const char *label, uint32 target_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 40); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_link_set(node_id = %u link_id = %u link = %u label = %s target_id = %u );\n", node_id, link_id, link, label, target_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], link_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], link);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], label, 16);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], target_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || link_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_o_link_destroy(VNodeID node_id, uint16 link_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 40); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_link_destroy(node_id = %u link_id = %u );\n", node_id, link_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], link_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], -1);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || link_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_link_set(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_link_set)(void *user_data, VNodeID node_id, uint16 link_id, VNodeID link, const char *label, uint32 target_id);
- VNodeID node_id;
- uint16 link_id;
- VNodeID link;
- char label[16];
- uint32 target_id;
- uint8 alias_bool;
-
- func_o_link_set = v_fs_get_user_func(40);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &link_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &link);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], label, 16, buffer_length - buffer_pos);
- if(buffer_length < 4 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &target_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_o_link_destroy(node_id = %u link_id = %u ); callback = %p\n", node_id, link_id, v_fs_get_alias_user_func(40));
- else
- printf("receive: verse_send_o_link_set(node_id = %u link_id = %u link = %u label = %s target_id = %u ); callback = %p\n", node_id, link_id, link, label, target_id, v_fs_get_user_func(40));
-#endif
- if(!alias_bool)
- {
- void (* alias_o_link_destroy)(void *user_data, VNodeID node_id, uint16 link_id);
- alias_o_link_destroy = v_fs_get_alias_user_func(40);
- if(alias_o_link_destroy != NULL)
- alias_o_link_destroy(v_fs_get_alias_user_data(40), node_id, link_id);
- return buffer_pos;
- }
- if(func_o_link_set != NULL)
- func_o_link_set(v_fs_get_user_data(40), node_id, link_id, link, label, target_id);
-
- return buffer_pos;
-}
-
-void verse_send_o_method_group_create(VNodeID node_id, uint16 group_id, const char *name)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 41); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_group_create(node_id = %u group_id = %u name = %s );\n", node_id, group_id, name);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_o_method_group_destroy(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 41); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_group_destroy(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_method_group_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_method_group_create)(void *user_data, VNodeID node_id, uint16 group_id, const char *name);
- VNodeID node_id;
- uint16 group_id;
- char name[16];
-
- func_o_method_group_create = v_fs_get_user_func(41);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_o_method_group_destroy(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_alias_user_func(41));
- else
- printf("receive: verse_send_o_method_group_create(node_id = %u group_id = %u name = %s ); callback = %p\n", node_id, group_id, name, v_fs_get_user_func(41));
-#endif
- if(name[0] == 0)
- {
- void (* alias_o_method_group_destroy)(void *user_data, VNodeID node_id, uint16 group_id);
- alias_o_method_group_destroy = v_fs_get_alias_user_func(41);
- if(alias_o_method_group_destroy != NULL)
- alias_o_method_group_destroy(v_fs_get_alias_user_data(41), node_id, group_id);
- return buffer_pos;
- }
- if(func_o_method_group_create != NULL)
- func_o_method_group_create(v_fs_get_user_data(41), node_id, group_id, name);
-
- return buffer_pos;
-}
-
-void verse_send_o_method_group_subscribe(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 42); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_group_subscribe(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_o_method_group_unsubscribe(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 42); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_group_unsubscribe(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_method_group_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_method_group_subscribe)(void *user_data, VNodeID node_id, uint16 group_id);
- VNodeID node_id;
- uint16 group_id;
- uint8 alias_bool;
-
- func_o_method_group_subscribe = v_fs_get_user_func(42);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_o_method_group_unsubscribe(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_alias_user_func(42));
- else
- printf("receive: verse_send_o_method_group_subscribe(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_user_func(42));
-#endif
- if(!alias_bool)
- {
- void (* alias_o_method_group_unsubscribe)(void *user_data, VNodeID node_id, uint16 group_id);
- alias_o_method_group_unsubscribe = v_fs_get_alias_user_func(42);
- if(alias_o_method_group_unsubscribe != NULL)
- alias_o_method_group_unsubscribe(v_fs_get_alias_user_data(42), node_id, group_id);
- return buffer_pos;
- }
- if(func_o_method_group_subscribe != NULL)
- func_o_method_group_subscribe(v_fs_get_user_data(42), node_id, group_id);
-
- return buffer_pos;
-}
-
-void verse_send_o_method_create(VNodeID node_id, uint16 group_id, uint16 method_id, const char *name, uint8 param_count, const VNOParamType *param_types, const char * *param_names)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 43); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_create(node_id = %u group_id = %u method_id = %u name = %s param_count = %u param_types = %p param_names = %p );\n", node_id, group_id, method_id, name, param_count, param_types, param_names);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], method_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 512);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], param_count);
- {
- unsigned int i, j, sum = 1;
- for(i = 0; i < param_count; i++)
- {
- sum += 3;
- for(j = 0; param_names[i][j] != 0; j++);
- }
- if(sum + buffer_pos > 1500)
- return;
- for(i = 0; i < param_count; i++)
- {
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], param_types[i]);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], param_names[i], 1500 - buffer_pos);
- }
- }
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u || method_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 9);
- else
- v_cmd_buf_set_address_size(head, 9);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_o_method_destroy(VNodeID node_id, uint16 group_id, uint16 method_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 43); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_destroy(node_id = %u group_id = %u method_id = %u );\n", node_id, group_id, method_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], method_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 512);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], -1);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u || method_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 9);
- else
- v_cmd_buf_set_address_size(head, 9);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_method_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_method_create)(void *user_data, VNodeID node_id, uint16 group_id, uint16 method_id, const char *name, uint8 param_count, const VNOParamType *param_types, const char * *param_names);
- VNodeID node_id;
- uint16 group_id;
- uint16 method_id;
- char name[512];
- uint8 param_count;
- const VNOParamType *param_types;
- const char * *param_names;
-
- func_o_method_create = v_fs_get_user_func(43);
- if(buffer_length < 8)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &method_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 512, buffer_length - buffer_pos);
- if(buffer_length < 1 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &param_count);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_o_method_destroy(node_id = %u group_id = %u method_id = %u ); callback = %p\n", node_id, group_id, method_id, v_fs_get_alias_user_func(43));
- else
- printf("receive: verse_send_o_method_create(node_id = %u group_id = %u method_id = %u name = %s param_count = %u ); callback = %p\n", node_id, group_id, method_id, name, param_count, v_fs_get_user_func(43));
-#endif
- if(param_count != 255)
- {
- unsigned int i, size, text = 0;
- VNOParamType types[256];
- uint8 t;
- char name_buf[1500], *names[256];
- for(i = 0; i < param_count; i++)
- {
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &t);
- types[i] = t;
- names[i] = &name_buf[text];
- size = vnp_raw_unpack_string(&buf[buffer_pos], names[i], 1500 - buffer_pos, buffer_length - buffer_pos);
- buffer_pos += size;
- text += size;
- }
- if(func_o_method_create != NULL)
- func_o_method_create(v_fs_get_user_data(43), node_id, group_id, method_id, name, param_count, types, (const char **) names);
- return buffer_pos;
- }
-
- if(name[0] == 0)
- {
- void (* alias_o_method_destroy)(void *user_data, VNodeID node_id, uint16 group_id, uint16 method_id);
- alias_o_method_destroy = v_fs_get_alias_user_func(43);
- if(alias_o_method_destroy != NULL)
- alias_o_method_destroy(v_fs_get_alias_user_data(43), node_id, group_id, method_id);
- return buffer_pos;
- }
- if(func_o_method_create != NULL)
- func_o_method_create(v_fs_get_user_data(43), node_id, group_id, method_id, name, param_count, param_types, param_names);
-
- return buffer_pos;
-}
-
-void verse_send_o_method_call(VNodeID node_id, uint16 group_id, uint16 method_id, VNodeID sender, const VNOPackedParams *params)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 44); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_method_call(node_id = %u group_id = %u method_id = %u sender = %u params = %p );\n", node_id, group_id, method_id, sender, params);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], method_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], sender);
- {
- unsigned int i;
- uint16 size;
- vnp_raw_unpack_uint16(params, &size);
- for(i = 0; i < size; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((uint8 *)params)[i]);
- free((void *) params); /* Drop the const. */
- }
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_method_call(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_method_call)(void *user_data, VNodeID node_id, uint16 group_id, uint16 method_id, VNodeID sender, const VNOPackedParams *params);
- VNodeID node_id;
- uint16 group_id;
- uint16 method_id;
- VNodeID sender;
- const VNOPackedParams *params;
-
- func_o_method_call = v_fs_get_user_func(44);
- if(buffer_length < 12)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &method_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &sender);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_method_call(node_id = %u group_id = %u method_id = %u sender = %u ); callback = %p\n", node_id, group_id, method_id, sender, v_fs_get_user_func(44));
-#endif
- {
- unsigned int i;
- uint8 par[1500];
- uint16 size;
- vnp_raw_unpack_uint16(&buf[buffer_pos], &size);
- for(i = 0; i < size; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &par[i]);
- if(func_o_method_call != NULL)
- func_o_method_call(v_fs_get_user_data(44), node_id, group_id, method_id, sender, par);
- return buffer_pos;
- }
-
- if(func_o_method_call != NULL)
- func_o_method_call(v_fs_get_user_data(44), node_id, group_id, method_id, sender, params);
-
- return buffer_pos;
-}
-
-void verse_send_o_anim_run(VNodeID node_id, uint16 link_id, uint32 time_s, uint32 time_f, uint8 dimensions, const real64 *pos, const real64 *speed, const real64 *accel, const real64 *scale, const real64 *scale_speed)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 45); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_anim_run(node_id = %u link_id = %u time_s = %u time_f = %u dimensions = %u pos = %p speed = %p accel = %p scale = %p scale_speed = %p );\n", node_id, link_id, time_s, time_f, dimensions, pos, speed, accel, scale, scale_speed);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], link_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_s);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], time_f);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], dimensions);
- {
- unsigned char mask = 0;
- unsigned int cmd, i;
- cmd = buffer_pos++;
- if(dimensions > 4)
- dimensions = 4;
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos[i]);
- if(speed != NULL)
- {
- mask |= 1;
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], speed[i]);
- }
- if(accel != NULL)
- {
- mask |= 2;
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], accel[i]);
- }
- if(scale != NULL)
- {
- mask |= 3;
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale[i]);
- }
- if(scale_speed != NULL)
- {
- mask |= 4;
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], scale_speed[i]);
- }
- vnp_raw_pack_uint8(&buf[cmd], mask);
- }
- if(node_id == (uint32) ~0u || link_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_anim_run(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_anim_run)(void *user_data, VNodeID node_id, uint16 link_id, uint32 time_s, uint32 time_f, uint8 dimensions, const real64 *pos, const real64 *speed, const real64 *accel, const real64 *scale, const real64 *scale_speed);
- VNodeID node_id;
- uint16 link_id;
- uint32 time_s;
- uint32 time_f;
- uint8 dimensions;
- const real64 *pos;
- const real64 *speed;
- const real64 *accel;
- const real64 *scale;
- const real64 *scale_speed;
-
- func_o_anim_run = v_fs_get_user_func(45);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &link_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_s);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &time_f);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &dimensions);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_anim_run(node_id = %u link_id = %u time_s = %u time_f = %u dimensions = %u ); callback = %p\n", node_id, link_id, time_s, time_f, dimensions, v_fs_get_user_func(45));
-#endif
- {
- double output[5][4];
- unsigned int i, j;
- char mask, pow = 1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &mask);
- if(dimensions > 4)
- dimensions = 4;
- for(j = 0; j < dimensions; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[0][j]);
- for(i = 1; i < 5; i++)
- {
- if((mask & pow) != 0)
- for(j = 0; j < dimensions; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &output[i][j]);
- else
- for(j = 0; j < dimensions; j++)
- output[i][j] = 0;
- pow *= 2;
- }
- if(func_o_anim_run != NULL)
- func_o_anim_run(v_fs_get_user_data(45), node_id, link_id, time_s, time_f, dimensions, &output[0][0], &output[1][0], &output[2][0], &output[3][0], &output[4][0]);
- return buffer_pos;
- }
-
- if(func_o_anim_run != NULL)
- func_o_anim_run(v_fs_get_user_data(45), node_id, link_id, time_s, time_f, dimensions, pos, speed, accel, scale, scale_speed);
-
- return buffer_pos;
-}
-
-void verse_send_o_hide(VNodeID node_id, uint8 hidden)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 46); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_o_hide(node_id = %u hidden = %u );\n", node_id, hidden);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], hidden);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_o_hide(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_o_hide)(void *user_data, VNodeID node_id, uint8 hidden);
- VNodeID node_id;
- uint8 hidden;
-
- func_o_hide = v_fs_get_user_func(46);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &hidden);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_o_hide(node_id = %u hidden = %u ); callback = %p\n", node_id, hidden, v_fs_get_user_func(46));
-#endif
- if(func_o_hide != NULL)
- func_o_hide(v_fs_get_user_data(46), node_id, hidden);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_s_node.c b/extern/verse/dist/v_gen_pack_s_node.c
deleted file mode 100644
index 6a9f4a05a0b..00000000000
--- a/extern/verse/dist/v_gen_pack_s_node.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_packet_ack(uint32 packet_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 7); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], packet_id);
- v_cmd_buf_set_unique_address_size(head, buffer_pos);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_ack_nak_buf(v_con_get_network_queue(), head);
- return;
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_packet_ack(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_packet_ack)(void *user_data, uint32 packet_id);
- uint32 packet_id;
-
- func_packet_ack = v_fs_get_user_func(7);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &packet_id);
-#if defined V_PRINT_RECEIVE_COMMANDS
-#endif
- if(func_packet_ack != NULL)
- func_packet_ack(v_fs_get_user_data(7), packet_id);
-
- return buffer_pos;
-}
-
-void verse_send_packet_nak(uint32 packet_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 8); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], packet_id);
- v_cmd_buf_set_unique_address_size(head, buffer_pos);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_ack_nak_buf(v_con_get_network_queue(), head);
- return;
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_packet_nak(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_packet_nak)(void *user_data, uint32 packet_id);
- uint32 packet_id;
-
- func_packet_nak = v_fs_get_user_func(8);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &packet_id);
-#if defined V_PRINT_RECEIVE_COMMANDS
-#endif
- if(func_packet_nak != NULL)
- func_packet_nak(v_fs_get_user_data(8), packet_id);
-
- return buffer_pos;
-}
-
-void verse_send_node_index_subscribe(uint32 mask)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 9); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_index_subscribe(mask = %u );\n", mask);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], mask);
- if(mask == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_node_index_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_node_index_subscribe)(void *user_data, uint32 mask);
- uint32 mask;
-
- func_node_index_subscribe = v_fs_get_user_func(9);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &mask);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_node_index_subscribe(mask = %u ); callback = %p\n", mask, v_fs_get_user_func(9));
-#endif
- if(func_node_index_subscribe != NULL)
- func_node_index_subscribe(v_fs_get_user_data(9), mask);
-
- return buffer_pos;
-}
-
-void verse_send_node_create(VNodeID node_id, VNodeType type, VNodeOwner owner)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 10); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_create(node_id = %u type = %u owner = %u );\n", node_id, type, owner);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)owner);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_node_destroy(VNodeID node_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 10); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_destroy(node_id = %u );\n", node_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_node_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_node_create)(void *user_data, VNodeID node_id, VNodeType type, VNodeOwner owner);
- VNodeID node_id;
- VNodeType type;
- VNodeOwner owner;
-
- func_node_create = v_fs_get_user_func(10);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNodeType)enum_temp;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- owner = (VNodeOwner)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(owner == (uint8) ~0u || type >= V_NT_NUM_TYPES)
- printf("receive: verse_send_node_destroy(node_id = %u ); callback = %p\n", node_id, v_fs_get_alias_user_func(10));
- else
- printf("receive: verse_send_node_create(node_id = %u type = %u owner = %u ); callback = %p\n", node_id, type, owner, v_fs_get_user_func(10));
-#endif
- if(owner == (uint8) ~0u || type >= V_NT_NUM_TYPES)
- {
- void (* alias_node_destroy)(void *user_data, VNodeID node_id);
- alias_node_destroy = v_fs_get_alias_user_func(10);
- if(alias_node_destroy != NULL)
- alias_node_destroy(v_fs_get_alias_user_data(10), node_id);
- return buffer_pos;
- }
- if(func_node_create != NULL)
- func_node_create(v_fs_get_user_data(10), node_id, (VNodeType) type, (VNodeOwner) owner);
-
- return buffer_pos;
-}
-
-void verse_send_node_subscribe(VNodeID node_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 11); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_subscribe(node_id = %u );\n", node_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_node_unsubscribe(VNodeID node_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 11); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_unsubscribe(node_id = %u );\n", node_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_node_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_node_subscribe)(void *user_data, VNodeID node_id);
- VNodeID node_id;
- uint8 alias_bool;
-
- func_node_subscribe = v_fs_get_user_func(11);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_node_unsubscribe(node_id = %u ); callback = %p\n", node_id, v_fs_get_alias_user_func(11));
- else
- printf("receive: verse_send_node_subscribe(node_id = %u ); callback = %p\n", node_id, v_fs_get_user_func(11));
-#endif
- if(!alias_bool)
- {
- void (* alias_node_unsubscribe)(void *user_data, VNodeID node_id);
- alias_node_unsubscribe = v_fs_get_alias_user_func(11);
- if(alias_node_unsubscribe != NULL)
- alias_node_unsubscribe(v_fs_get_alias_user_data(11), node_id);
- return buffer_pos;
- }
- if(func_node_subscribe != NULL)
- func_node_subscribe(v_fs_get_user_data(11), node_id);
-
- return buffer_pos;
-}
-
-void verse_send_tag_group_create(VNodeID node_id, uint16 group_id, const char *name)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 16); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_group_create(node_id = %u group_id = %u name = %s );\n", node_id, group_id, name);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_tag_group_destroy(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 16); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_group_destroy(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_tag_group_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_tag_group_create)(void *user_data, VNodeID node_id, uint16 group_id, const char *name);
- VNodeID node_id;
- uint16 group_id;
- char name[16];
-
- func_tag_group_create = v_fs_get_user_func(16);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_tag_group_destroy(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_alias_user_func(16));
- else
- printf("receive: verse_send_tag_group_create(node_id = %u group_id = %u name = %s ); callback = %p\n", node_id, group_id, name, v_fs_get_user_func(16));
-#endif
- if(name[0] == 0)
- {
- void (* alias_tag_group_destroy)(void *user_data, VNodeID node_id, uint16 group_id);
- alias_tag_group_destroy = v_fs_get_alias_user_func(16);
- if(alias_tag_group_destroy != NULL)
- alias_tag_group_destroy(v_fs_get_alias_user_data(16), node_id, group_id);
- return buffer_pos;
- }
- if(func_tag_group_create != NULL)
- func_tag_group_create(v_fs_get_user_data(16), node_id, group_id, name);
-
- return buffer_pos;
-}
-
-void verse_send_tag_group_subscribe(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 17); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_group_subscribe(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_tag_group_unsubscribe(VNodeID node_id, uint16 group_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 17); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_group_unsubscribe(node_id = %u group_id = %u );\n", node_id, group_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_tag_group_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_tag_group_subscribe)(void *user_data, VNodeID node_id, uint16 group_id);
- VNodeID node_id;
- uint16 group_id;
- uint8 alias_bool;
-
- func_tag_group_subscribe = v_fs_get_user_func(17);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_tag_group_unsubscribe(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_alias_user_func(17));
- else
- printf("receive: verse_send_tag_group_subscribe(node_id = %u group_id = %u ); callback = %p\n", node_id, group_id, v_fs_get_user_func(17));
-#endif
- if(!alias_bool)
- {
- void (* alias_tag_group_unsubscribe)(void *user_data, VNodeID node_id, uint16 group_id);
- alias_tag_group_unsubscribe = v_fs_get_alias_user_func(17);
- if(alias_tag_group_unsubscribe != NULL)
- alias_tag_group_unsubscribe(v_fs_get_alias_user_data(17), node_id, group_id);
- return buffer_pos;
- }
- if(func_tag_group_subscribe != NULL)
- func_tag_group_subscribe(v_fs_get_user_data(17), node_id, group_id);
-
- return buffer_pos;
-}
-
-void verse_send_tag_create(VNodeID node_id, uint16 group_id, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 18); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_create(node_id = %u group_id = %u tag_id = %u name = %s type = %u tag = %p );\n", node_id, group_id, tag_id, name, type, tag);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], tag_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- if(type > VN_TAG_BLOB)
- {
- v_cmd_buf_free(head);
- return;
- }
- switch(type)
- {
- case VN_TAG_BOOLEAN :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((VNTag *)tag)->vboolean);
- break;
- case VN_TAG_UINT32 :
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vuint32);
- break;
- case VN_TAG_REAL64 :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64);
- break;
- case VN_TAG_STRING :
- {
- unsigned int i;
- for(i = 0; ((VNTag *)tag)->vstring[i] != 0 && i < VN_TAG_MAX_BLOB_SIZE; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((VNTag *)tag)->vstring[i]);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);
- }
- break;
- case VN_TAG_REAL64_VEC3 :
- {
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[0]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[1]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], ((VNTag *)tag)->vreal64_vec3[2]);
- }
- break;
- case VN_TAG_LINK :
- {
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vlink);
- }
- break;
- case VN_TAG_ANIMATION :
- {
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.curve);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.start);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], ((VNTag *)tag)->vanimation.end);
- }
- break;
- case VN_TAG_BLOB :
- {
- unsigned int i;
- if(((VNTag *)tag)->vblob.size > VN_TAG_MAX_BLOB_SIZE)
- ((VNTag *)tag)->vblob.size = VN_TAG_MAX_BLOB_SIZE;
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], ((VNTag *)tag)->vblob.size);
- for(i = 0; i < ((VNTag *)tag)->vblob.size; i++)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], ((uint8 *)((VNTag *)tag)->vblob.blob)[i]);
- }
- break;
- default :
- ;
- }
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u || tag_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 9);
- else
- v_cmd_buf_set_address_size(head, 9);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_tag_destroy(VNodeID node_id, uint16 group_id, uint16 tag_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 18); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_tag_destroy(node_id = %u group_id = %u tag_id = %u );\n", node_id, group_id, tag_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], group_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], tag_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)-1);
- if(node_id == (uint32) ~0u || group_id == (uint16) ~0u || tag_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 9);
- else
- v_cmd_buf_set_address_size(head, 9);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_tag_create(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_tag_create)(void *user_data, VNodeID node_id, uint16 group_id, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag);
- VNodeID node_id;
- uint16 group_id;
- uint16 tag_id;
- char name[16];
- VNTagType type;
- const VNTag *tag;
-
- func_tag_create = v_fs_get_user_func(18);
- if(buffer_length < 8)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &group_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &tag_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
- if(buffer_length < 1 + buffer_pos)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNTagType)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(type >= VN_TAG_TYPE_COUNT)
- printf("receive: verse_send_tag_destroy(node_id = %u group_id = %u tag_id = %u ); callback = %p\n", node_id, group_id, tag_id, v_fs_get_alias_user_func(18));
- else
- printf("receive: verse_send_tag_create(node_id = %u group_id = %u tag_id = %u name = %s type = %u ); callback = %p\n", node_id, group_id, tag_id, name, type, v_fs_get_user_func(18));
-#endif
- if(type < VN_TAG_TYPE_COUNT)
- {
- VNTag tag;
- unsigned int i;
- char string[VN_TAG_MAX_BLOB_SIZE];
- switch(type)
- {
- case VN_TAG_BOOLEAN :
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &tag.vboolean);
- break;
- case VN_TAG_UINT32 :
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vuint32);
- break;
- case VN_TAG_REAL64 :
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64);
- break;
- case VN_TAG_STRING :
- {
- tag.vstring = string;
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], string, VN_TAG_MAX_BLOB_SIZE, buffer_length - buffer_pos);
- }
- break;
- case VN_TAG_REAL64_VEC3 :
- {
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[0]);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[1]);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &tag.vreal64_vec3[2]);
- }
- break;
- case VN_TAG_LINK :
- {
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vlink);
- }
- break;
- case VN_TAG_ANIMATION :
- {
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.curve);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.start);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &tag.vanimation.end);
- }
- break;
- case VN_TAG_BLOB :
- {
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &tag.vblob.size);
- if(tag.vblob.size > VN_TAG_MAX_BLOB_SIZE)
- tag.vblob.size = VN_TAG_MAX_BLOB_SIZE;
- tag.vblob.blob = string;
- for(i = 0; i < tag.vblob.size; i++)
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &string[i]);
- }
- break;
- default :
- ;
- }
- if(func_tag_create != NULL)
- func_tag_create(v_fs_get_user_data(18), node_id, group_id, tag_id, name, type, &tag);
- return buffer_pos;
- }
-
- if(type >= VN_TAG_TYPE_COUNT)
- {
- void (* alias_tag_destroy)(void *user_data, VNodeID node_id, uint16 group_id, uint16 tag_id);
- alias_tag_destroy = v_fs_get_alias_user_func(18);
- if(alias_tag_destroy != NULL)
- alias_tag_destroy(v_fs_get_alias_user_data(18), node_id, group_id, tag_id);
- return buffer_pos;
- }
- if(func_tag_create != NULL)
- func_tag_create(v_fs_get_user_data(18), node_id, group_id, tag_id, name, (VNTagType) type, tag);
-
- return buffer_pos;
-}
-
-void verse_send_node_name_set(VNodeID node_id, const char *name)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 19); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_node_name_set(node_id = %u name = %s );\n", node_id, name);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 512);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_node_name_set(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_node_name_set)(void *user_data, VNodeID node_id, const char *name);
- VNodeID node_id;
- char name[512];
-
- func_node_name_set = v_fs_get_user_func(19);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 512, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_node_name_set(node_id = %u name = %s ); callback = %p\n", node_id, name, v_fs_get_user_func(19));
-#endif
- if(func_node_name_set != NULL)
- func_node_name_set(v_fs_get_user_data(19), node_id, name);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_pack_t_node.c b/extern/verse/dist/v_gen_pack_t_node.c
deleted file mode 100644
index 0cfbf8b7f21..00000000000
--- a/extern/verse/dist/v_gen_pack_t_node.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
-** This is automatically generated source code -- do not edit.
-** Changes are affected either by editing the corresponding protocol
-** definition file (v_cmd_def_X.c where X=node type), or by editing
-** the code generator itself, in v_cmd_gen.c.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "v_cmd_gen.h"
-#if !defined(V_GENERATE_FUNC_MODE)
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_util.h"
-
-void verse_send_t_language_set(VNodeID node_id, const char *language)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 96); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_language_set(node_id = %u language = %s );\n", node_id, language);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], language, 512);
- if(node_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 5);
- else
- v_cmd_buf_set_address_size(head, 5);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_t_language_set(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_t_language_set)(void *user_data, VNodeID node_id, const char *language);
- VNodeID node_id;
- char language[512];
-
- func_t_language_set = v_fs_get_user_func(96);
- if(buffer_length < 4)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], language, 512, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_t_language_set(node_id = %u language = %s ); callback = %p\n", node_id, language, v_fs_get_user_func(96));
-#endif
- if(func_t_language_set != NULL)
- func_t_language_set(v_fs_get_user_data(96), node_id, language);
-
- return buffer_pos;
-}
-
-void verse_send_t_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 97); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_buffer_create(node_id = %u buffer_id = %u name = %s );\n", node_id, buffer_id, name);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], name, 16);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_t_buffer_destroy(VNodeID node_id, VBufferID buffer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 97); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_buffer_destroy(node_id = %u buffer_id = %u );\n", node_id, buffer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], NULL, 16);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_t_buffer_create(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_t_buffer_create)(void *user_data, VNodeID node_id, VBufferID buffer_id, const char *name);
- VNodeID node_id;
- VBufferID buffer_id;
- char name[16];
-
- func_t_buffer_create = v_fs_get_user_func(97);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &buffer_id);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], name, 16, buffer_length - buffer_pos);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(name[0] == 0)
- printf("receive: verse_send_t_buffer_destroy(node_id = %u buffer_id = %u ); callback = %p\n", node_id, buffer_id, v_fs_get_alias_user_func(97));
- else
- printf("receive: verse_send_t_buffer_create(node_id = %u buffer_id = %u name = %s ); callback = %p\n", node_id, buffer_id, name, v_fs_get_user_func(97));
-#endif
- if(name[0] == 0)
- {
- void (* alias_t_buffer_destroy)(void *user_data, VNodeID node_id, VBufferID buffer_id);
- alias_t_buffer_destroy = v_fs_get_alias_user_func(97);
- if(alias_t_buffer_destroy != NULL)
- alias_t_buffer_destroy(v_fs_get_alias_user_data(97), node_id, buffer_id);
- return buffer_pos;
- }
- if(func_t_buffer_create != NULL)
- func_t_buffer_create(v_fs_get_user_data(97), node_id, buffer_id, name);
-
- return buffer_pos;
-}
-
-void verse_send_t_buffer_subscribe(VNodeID node_id, VBufferID buffer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 98); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_buffer_subscribe(node_id = %u buffer_id = %u );\n", node_id, buffer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], TRUE);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_t_buffer_unsubscribe(VNodeID node_id, VBufferID buffer_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_10);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 98); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_buffer_unsubscribe(node_id = %u buffer_id = %u );\n", node_id, buffer_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], FALSE);
- if(node_id == (uint32) ~0u || buffer_id == (uint16) ~0u)
- v_cmd_buf_set_unique_address_size(head, 7);
- else
- v_cmd_buf_set_address_size(head, 7);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_t_buffer_subscribe(const char *buf, size_t buffer_length)
-{
- unsigned int buffer_pos = 0;
- void (* func_t_buffer_subscribe)(void *user_data, VNodeID node_id, VBufferID buffer_id);
- VNodeID node_id;
- VBufferID buffer_id;
- uint8 alias_bool;
-
- func_t_buffer_subscribe = v_fs_get_user_func(98);
- if(buffer_length < 6)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &buffer_id);
- if(buffer_length < buffer_pos + 1)
- return -1;
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &alias_bool);
-#if defined V_PRINT_RECEIVE_COMMANDS
- if(!alias_bool)
- printf("receive: verse_send_t_buffer_unsubscribe(node_id = %u buffer_id = %u ); callback = %p\n", node_id, buffer_id, v_fs_get_alias_user_func(98));
- else
- printf("receive: verse_send_t_buffer_subscribe(node_id = %u buffer_id = %u ); callback = %p\n", node_id, buffer_id, v_fs_get_user_func(98));
-#endif
- if(!alias_bool)
- {
- void (* alias_t_buffer_unsubscribe)(void *user_data, VNodeID node_id, VBufferID buffer_id);
- alias_t_buffer_unsubscribe = v_fs_get_alias_user_func(98);
- if(alias_t_buffer_unsubscribe != NULL)
- alias_t_buffer_unsubscribe(v_fs_get_alias_user_data(98), node_id, buffer_id);
- return buffer_pos;
- }
- if(func_t_buffer_subscribe != NULL)
- func_t_buffer_subscribe(v_fs_get_user_data(98), node_id, buffer_id);
-
- return buffer_pos;
-}
-
-#endif
-
diff --git a/extern/verse/dist/v_gen_unpack_func.h b/extern/verse/dist/v_gen_unpack_func.h
deleted file mode 100644
index 462777608c7..00000000000
--- a/extern/verse/dist/v_gen_unpack_func.h
+++ /dev/null
@@ -1,63 +0,0 @@
-extern unsigned int v_unpack_connect(const char *data, size_t length);
-extern unsigned int v_unpack_connect_accept(const char *data, size_t length);
-extern unsigned int v_unpack_connect_terminate(const char *data, size_t length);
-extern unsigned int v_unpack_ping(const char *data, size_t length);
-extern unsigned int v_unpack_packet_ack(const char *data, size_t length);
-extern unsigned int v_unpack_packet_nak(const char *data, size_t length);
-extern unsigned int v_unpack_node_index_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_node_create(const char *data, size_t length);
-extern unsigned int v_unpack_node_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_tag_group_create(const char *data, size_t length);
-extern unsigned int v_unpack_tag_group_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_tag_create(const char *data, size_t length);
-extern unsigned int v_unpack_node_name_set(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_pos_real32(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_rot_real32(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_scale_real32(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_pos_real64(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_rot_real64(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_scale_real64(const char *data, size_t length);
-extern unsigned int v_unpack_o_transform_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_o_light_set(const char *data, size_t length);
-extern unsigned int v_unpack_o_link_set(const char *data, size_t length);
-extern unsigned int v_unpack_o_method_group_create(const char *data, size_t length);
-extern unsigned int v_unpack_o_method_group_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_o_method_create(const char *data, size_t length);
-extern unsigned int v_unpack_o_method_call(const char *data, size_t length);
-extern unsigned int v_unpack_o_anim_run(const char *data, size_t length);
-extern unsigned int v_unpack_o_hide(const char *data, size_t length);
-extern unsigned int v_unpack_g_layer_create(const char *data, size_t length);
-extern unsigned int v_unpack_g_layer_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_g_vertex_set_xyz_real32(const char *data, size_t length);
-extern unsigned int v_unpack_g_vertex_set_xyz_real64(const char *data, size_t length);
-extern unsigned int v_unpack_g_vertex_set_uint32(const char *data, size_t length);
-extern unsigned int v_unpack_g_vertex_set_real64(const char *data, size_t length);
-extern unsigned int v_unpack_g_vertex_set_real32(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_corner_uint32(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_corner_real64(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_corner_real32(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_face_uint8(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_face_uint32(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_face_real64(const char *data, size_t length);
-extern unsigned int v_unpack_g_polygon_set_face_real32(const char *data, size_t length);
-extern unsigned int v_unpack_g_crease_set_vertex(const char *data, size_t length);
-extern unsigned int v_unpack_g_crease_set_edge(const char *data, size_t length);
-extern unsigned int v_unpack_g_bone_create(const char *data, size_t length);
-extern unsigned int v_unpack_m_fragment_create(const char *data, size_t length);
-extern unsigned int v_unpack_b_dimensions_set(const char *data, size_t length);
-extern unsigned int v_unpack_b_layer_create(const char *data, size_t length);
-extern unsigned int v_unpack_b_layer_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_b_tile_set(const char *data, size_t length);
-extern unsigned int v_unpack_t_language_set(const char *data, size_t length);
-extern unsigned int v_unpack_t_buffer_create(const char *data, size_t length);
-extern unsigned int v_unpack_t_buffer_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_t_text_set(const char *data, size_t length);
-extern unsigned int v_unpack_c_curve_create(const char *data, size_t length);
-extern unsigned int v_unpack_c_curve_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_c_key_set(const char *data, size_t length);
-extern unsigned int v_unpack_a_buffer_create(const char *data, size_t length);
-extern unsigned int v_unpack_a_buffer_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_a_block_set(const char *data, size_t length);
-extern unsigned int v_unpack_a_stream_create(const char *data, size_t length);
-extern unsigned int v_unpack_a_stream_subscribe(const char *data, size_t length);
-extern unsigned int v_unpack_a_stream(const char *data, size_t length);
diff --git a/extern/verse/dist/v_gen_unpack_funcs.h b/extern/verse/dist/v_gen_unpack_funcs.h
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/extern/verse/dist/v_gen_unpack_funcs.h
+++ /dev/null
diff --git a/extern/verse/dist/v_internal_verse.h b/extern/verse/dist/v_internal_verse.h
deleted file mode 100644
index ce838351437..00000000000
--- a/extern/verse/dist/v_internal_verse.h
+++ /dev/null
@@ -1,2 +0,0 @@
-extern void verse_send_packet_ack(uint32 packet_id);
-extern void verse_send_packet_nak(uint32 packet_id);
diff --git a/extern/verse/dist/v_man_pack_node.c b/extern/verse/dist/v_man_pack_node.c
deleted file mode 100644
index cc85c4383df..00000000000
--- a/extern/verse/dist/v_man_pack_node.c
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
-**
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "v_cmd_buf.h"
-#include "v_network_out_que.h"
-#include "v_network.h"
-#include "v_connection.h"
-#include "v_encryption.h"
-
-unsigned int v_unpack_connect(const char *buf, unsigned int buffer_length)
-{
- return -1; /* this command is illegal to send */
-}
-
-unsigned int v_unpack_connect_accept(const char *buf, unsigned int buffer_length)
-{
- return -1; /* this command is illegal to send */
-}
-
-extern void v_callback_connect_terminate(const char *bye);
-
-unsigned int v_unpack_connect_terminate(const char *buf, unsigned int buffer_length)
-{
- unsigned int buffer_pos = 0;
- char bye[512];
-
- buffer_pos = vnp_raw_unpack_string(buf, bye, sizeof bye, buffer_length);
- v_callback_connect_terminate(bye);
-
- return buffer_pos;
-}
-
-static unsigned int pack_b_tile_set_head(VCMDBufHead *head, VNodeID node_id, VLayerID layer_id, uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile)
-{
- unsigned int buffer_pos = 0;
- uint8 *buf;
- buf = ((VCMDBuffer30 *)head)->buf;
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 83); /* Pack the command. */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_b_tile_set(node_id = %u layer_id = %u tile_x = %u tile_y = %u z = %u type = %u tile = %p );\n", node_id, layer_id, tile_x, tile_y, z, type, tile);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], layer_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], tile_x);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], tile_y);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], z);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], (uint8)type);
- return buffer_pos;
- v_cmd_buf_set_address_size(head, 13);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_b_tile_set(VNodeID node_id, VLayerID layer_id, uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
-
- switch(type)
- {
- case VN_B_LAYER_UINT1 :
- head = v_cmd_buf_allocate(VCMDBS_30);/* Allocating the buffer */
- buf = ((VCMDBuffer30 *)head)->buf;
- buffer_pos += pack_b_tile_set_head(head, node_id, layer_id, tile_x, tile_y, z, type, tile);
- buffer_pos += vnp_raw_pack_uint8_vector(&buf[buffer_pos], tile->vuint1, VN_B_TILE_SIZE * VN_B_TILE_SIZE / 8);
- break;
- case VN_B_LAYER_UINT8 :
- head = v_cmd_buf_allocate(VCMDBS_80);/* Allocating the buffer */
- buf = ((VCMDBuffer80 *)head)->buf;
- buffer_pos += pack_b_tile_set_head(head, node_id, layer_id, tile_x, tile_y, z, type, tile);
- buffer_pos += vnp_raw_pack_uint8_vector(&buf[buffer_pos], tile->vuint8, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_UINT16 :
- head = v_cmd_buf_allocate(VCMDBS_160);/* Allocating the buffer */
- buf = ((VCMDBuffer160 *)head)->buf;
- buffer_pos += pack_b_tile_set_head(head, node_id, layer_id, tile_x, tile_y, z, type, tile);
- buffer_pos += vnp_raw_pack_uint16_vector(&buf[buffer_pos], tile->vuint16, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_REAL32 :
- head = v_cmd_buf_allocate(VCMDBS_320);/* Allocating the buffer */
- buf = ((VCMDBuffer320 *)head)->buf;
- buffer_pos += pack_b_tile_set_head(head, node_id, layer_id, tile_x, tile_y, z, type, tile);
- buffer_pos += vnp_raw_pack_real32_vector(&buf[buffer_pos], tile->vreal32, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_REAL64 :
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
- buffer_pos += pack_b_tile_set_head(head, node_id, layer_id, tile_x, tile_y, z, type, tile);
- buffer_pos += vnp_raw_pack_real64_vector(&buf[buffer_pos], tile->vreal64, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- default:
- head = NULL;
- }
- v_cmd_buf_set_address_size(head, 13);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_b_tile_set(const char *buf, size_t buffer_length)
-{
- uint8 enum_temp;
- unsigned int buffer_pos = 0;
- void (* func_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);
- VNodeID node_id;
- VLayerID layer_id;
- uint16 tile_x;
- uint16 tile_y;
- uint16 z;
- VNBLayerType type;
- const VNBTile *tile;
-
- func_b_tile_set = v_fs_get_user_func(83);
- if(buffer_length < 12)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &layer_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &tile_x);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &tile_y);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &z);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &enum_temp);
- type = (VNBLayerType)enum_temp;
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_b_tile_set(node_id = %u layer_id = %u tile_x = %u tile_y = %u z = %u type = %u ); callback = %p\n", node_id, layer_id, tile_x, tile_y, z, type, v_fs_get_user_func(83));
-#endif
- {
- VNBTile tile;
- switch(type)
- {
- case VN_B_LAYER_UINT1 :
- buffer_pos += vnp_raw_unpack_uint8_vector(&buf[buffer_pos], tile.vuint1, VN_B_TILE_SIZE * VN_B_TILE_SIZE / 8);
- break;
- case VN_B_LAYER_UINT8 :
- buffer_pos += vnp_raw_unpack_uint8_vector(&buf[buffer_pos], tile.vuint8, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_UINT16 :
- buffer_pos += vnp_raw_unpack_uint16_vector(&buf[buffer_pos], tile.vuint16, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_REAL32 :
- buffer_pos += vnp_raw_unpack_real32_vector(&buf[buffer_pos], tile.vreal32, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- case VN_B_LAYER_REAL64 :
- buffer_pos += vnp_raw_unpack_real64_vector(&buf[buffer_pos], tile.vreal64, VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- break;
- }
- if(func_b_tile_set != NULL && type <= VN_B_LAYER_REAL64)
- func_b_tile_set(v_fs_get_user_data(83), node_id, layer_id, tile_x, tile_y, z, type, &tile);
- return buffer_pos;
- }
-
- if(func_b_tile_set != NULL)
- func_b_tile_set(v_fs_get_user_data(83), node_id, layer_id, tile_x, tile_y, z, (VNBLayerType)type, tile);
-
- return buffer_pos;
-}
-
-typedef struct VTempText VTempText;
-
-struct VTempText {
- VNodeID node_id;
- VBufferID buffer_id;
- uint32 pos;
- uint32 length;
- uint16 index;
- char *text;
- VTempText *next;
-};
-
-typedef struct {
- VTempText *text_temp;
- uint16 text_send_id;
- uint16 text_receive_id;
-} VOrderedStorage;
-
-VOrderedStorage * v_create_ordered_storage(void)
-{
- VOrderedStorage *s;
-
- s = malloc(sizeof *s);
- s->text_temp = NULL;
- s->text_send_id = 0;
- s->text_receive_id = 0;
- return s;
-}
-
-void v_destroy_ordered_storage(VOrderedStorage *s)
-{
- VTempText *line, *next;
-
- for(line = s->text_temp; line != NULL; line = next)
- {
- next = line->next;
- if(line->text != NULL)
- free(line->text);
- free(line);
- }
- free(s);
-}
-
-void verse_send_t_text_set(VNodeID node_id, VBufferID buffer_id, uint32 pos, uint32 length, const char *text)
-{
- uint8 *buf;
- VOrderedStorage *s;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 99);/* Packing the command */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_t_text_set(node_id = %u buffer_id = %u pos = %u length = %u text = %s );\n", node_id, buffer_id, pos, length, text);
-#endif
- s = v_con_get_ordered_storage();
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], buffer_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], pos);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], length);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], s->text_send_id++);
- if(text == NULL)
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);
- else
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], text, VN_T_MAX_TEXT_CMD_SIZE);
- v_cmd_buf_set_unique_address_size(head, buffer_pos);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-static void call_text_set(VTempText *line)
-{
- const char *t;
- void (* func_t_text_set)(void *user_data, VNodeID node_id, VBufferID buffer_id, uint32 pos, uint16 length, const char *text);
-
- func_t_text_set = v_fs_get_user_func(99);
-#if defined V_PRINT_RECEIVE_COMMANDS
- printf("receive: verse_send_t_text_set(node_id = %u buffer_id = %u pos = %u length = %u text = %s ); callback = %p\n", line->node_id, line->buffer_id, line->pos, line->length, line->text, v_fs_get_user_func(99));
-#endif
- if(line->text == NULL)
- t = "";
- else
- t = line->text;
- if(func_t_text_set != NULL)
- func_t_text_set(v_fs_get_user_data(99), line->node_id, line->buffer_id, line->pos, line->length, t);
-}
-
-unsigned int v_unpack_t_text_set(const char *buf, size_t buffer_length)
-{
- unsigned int i, buffer_pos = 0;
- VOrderedStorage *s;
- VTempText l, *line, *past = NULL;
- char text[1500];
-
- if(buffer_length < 12)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &l.node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &l.buffer_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &l.pos);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &l.length);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &l.index);
- buffer_pos += vnp_raw_unpack_string(&buf[buffer_pos], text, sizeof text, buffer_length - buffer_pos);
- if(text[0] == 0)
- l.text = NULL;
- else
- l.text = text;
- s = v_con_get_ordered_storage();
- if(s->text_receive_id == l.index)
- {
- call_text_set(&l);
- s->text_receive_id++;
- line = s->text_temp;
- while(line != NULL)
- {
- if(line->index == s->text_receive_id)
- {
- call_text_set(line);
- if(past == NULL)
- s->text_temp = line->next;
- else
- past->next = line->next;
- if(line->text != NULL)
- free(line->text);
- past = NULL;
- free(line);
- line = s->text_temp;
- s->text_receive_id++;
- }
- else
- {
- past = line;
- line = line->next;
- }
- }
- }
- else
- {
- line = malloc(sizeof *line);
- *line = l;
- line->next = s->text_temp;
- s->text_temp = line;
- i = strlen(text);
- if(i > 0)
- {
- line->text = malloc(i + 1);
- strcpy(line->text, text);
- }
- else
- line->text = NULL;
- }
- return buffer_pos;
-}
-
-void verse_send_c_key_set(VNodeID node_id, VLayerID curve_id, uint32 key_id, uint8 dimensions,
- const real64 *pre_value, const uint32 *pre_pos,
- const real64 *value, real64 pos,
- const real64 *post_value, const uint32 *post_pos)
-{
- uint8 *buf;
- unsigned int i, buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- if(dimensions == 0 || dimensions > 4)
- return;
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 130);/* Packing the command */
-#if defined V_PRINT_SEND_COMMANDS
- switch(dimensions)
- {
- case 1:
- printf("send: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = %f pre_pos = %u value = %f pos = %f, pre_value = %f pre_pos = %u ); callback = %p\n", node_id, curve_id, key_id, dimensions, pre_value[0], pre_pos[0], value[0], pos, pre_value[0], pre_pos[0], v_fs_get_user_func(130));
- break;
- case 2:
- printf("sende: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f} pre_pos = {%u, %u} value = {%f, %f} pos = %f, pre_value = {%f, %f} pre_pos = {%u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1],
- pre_pos[0], pre_pos[1],
- value[0], value[1], pos,
- pre_value[0], pre_value[1],
- pre_pos[0], pre_pos[1], v_fs_get_user_func(130));
- break;
- case 3:
- printf("send: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u} value = {%f, %f, %f} pos = %f, pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1], pre_value[2],
- pre_pos[0], pre_pos[1], pre_pos[2],
- value[0], value[1], value[2], pos,
- pre_value[0], pre_value[1], pre_value[2],
- pre_pos[0], pre_pos[1], pre_pos[2], v_fs_get_user_func(130));
-
- break;
- case 4:
- printf("send: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u} value = {%f, %f, %f, %f} pos = %f, pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1], pre_value[2], pre_value[3],
- pre_pos[0], pre_pos[1], pre_pos[2], pre_pos[3],
- value[0], value[1], value[2], value[3], pos,
- pre_value[0], pre_value[1], pre_value[2], pre_value[3],
- pre_pos[0], pre_pos[1], pre_pos[2], pre_pos[3], v_fs_get_user_func(130));
- break;
- }
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], key_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], dimensions);
-
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pre_value[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], pre_pos[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], value[i]);
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], pos);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], post_value[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], post_pos[i]);
-
- if(key_id == (uint32) ~0u)
- v_cmd_buf_set_unique_address_size(head, 11);
- else
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-void verse_send_c_key_destroy(VNodeID node_id, VLayerID curve_id, uint32 key_id)
-{
- uint8 *buf;
- unsigned int buffer_pos = 0;
- VCMDBufHead *head;
- head = v_cmd_buf_allocate(VCMDBS_1500);/* Allocating the buffer */
- buf = ((VCMDBuffer10 *)head)->buf;
-
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 130);/* Packing the command */
-#if defined V_PRINT_SEND_COMMANDS
- printf("send: verse_send_c_key_destroy(node_id = %u curve_id = %u key_id = %u );\n", node_id, curve_id, key_id);
-#endif
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], node_id);
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], curve_id);
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], key_id);
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], 0);
- v_cmd_buf_set_address_size(head, 11);
- v_cmd_buf_set_size(head, buffer_pos);
- v_noq_send_buf(v_con_get_network_queue(), head);
-}
-
-unsigned int v_unpack_c_key_set(const char *buf, size_t buffer_length)
-{
- unsigned int i, buffer_pos = 0;
- VNodeID node_id;
- VLayerID curve_id;
- uint32 key_id;
- uint8 dimensions;
- real64 pre_value[4], value[4], pos, post_value[4];
- uint32 post_pos[4], pre_pos[4];
-
- if(buffer_length < 11)
- return -1;
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &node_id);
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &curve_id);
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &key_id);
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &dimensions);
- if(dimensions != 0 && dimensions < 5)
- {
- void (* func_c_key_set)(void *user_data, VNodeID node_id, VLayerID curve_id, uint32 key_id, uint8 dimensions, real64 *pre_value, uint32 *pre_pos, real64 *value, real64 pos, real64 *post_value, uint32 *post_pos);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &pre_value[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &pre_pos[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &value[i]);
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &pos);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &post_value[i]);
- for(i = 0; i < dimensions; i++)
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &post_pos[i]);
- #if defined V_PRINT_RECEIVE_COMMANDS
- switch(dimensions)
- {
- case 1:
- printf("receive: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = %f pre_pos = %u value = %f pos = %f, pre_value = %f pre_pos = %u ); callback = %p\n", node_id, curve_id, key_id, dimensions, pre_value[0], pre_pos[0], value[0], pos, pre_value[0], pre_pos[0], v_fs_get_user_func(130));
- break;
- case 2:
- printf("receive: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f} pre_pos = {%u, %u} value = {%f, %f} pos = %f, pre_value = {%f, %f} pre_pos = {%u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1],
- pre_pos[0], pre_pos[1],
- value[0], value[1], pos,
- pre_value[0], pre_value[1],
- pre_pos[0], pre_pos[1], v_fs_get_user_func(130));
- break;
- case 3:
- printf("receive: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u} value = {%f, %f, %f} pos = %f, pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1], pre_value[2],
- pre_pos[0], pre_pos[1], pre_pos[2],
- value[0], value[1], value[2], pos,
- pre_value[0], pre_value[1], pre_value[2],
- pre_pos[0], pre_pos[1], pre_pos[2], v_fs_get_user_func(130));
-
- break;
- case 4:
- printf("receive: verse_send_c_key_set(node_id = %u curve_id = %u key_id = %u dimensions = %u pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u} value = {%f, %f, %f, %f} pos = %f, pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u}); callback = %p\n",
- node_id, curve_id, key_id, dimensions,
- pre_value[0], pre_value[1], pre_value[2], pre_value[3],
- pre_pos[0], pre_pos[1], pre_pos[2], pre_pos[3],
- value[0], value[1], value[2], value[3], pos,
- pre_value[0], pre_value[1], pre_value[2], pre_value[3],
- pre_pos[0], pre_pos[1], pre_pos[2], pre_pos[3], v_fs_get_user_func(130));
- break;
- }
- #endif
- func_c_key_set = v_fs_get_user_func(130);
- if(func_c_key_set != NULL)
- func_c_key_set(v_fs_get_user_data(130), node_id, curve_id, key_id, dimensions, pre_value, pre_pos, value, pos, post_value, post_pos);
- return buffer_pos;
- }else
- {
- void (* alias_c_key_destroy)(void *user_data, VNodeID node_id, VLayerID curve_id, uint32 key_id);
- alias_c_key_destroy = v_fs_get_alias_user_func(130);
- printf("receive: verse_send_c_key_destroy(node_id = %u curve_id = %u key_id = %u); callback = %p\n", node_id, curve_id, key_id, alias_c_key_destroy);
- if(alias_c_key_destroy != NULL)
- alias_c_key_destroy(v_fs_get_alias_user_data(130), node_id, curve_id, key_id);
- return buffer_pos;
- }
-}
-
-#endif
diff --git a/extern/verse/dist/v_network.c b/extern/verse/dist/v_network.c
deleted file mode 100644
index 408cc20e393..00000000000
--- a/extern/verse/dist/v_network.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-**
-*/
-
-#if defined _WIN32
-#include <winsock.h>
-typedef unsigned int uint;
-typedef SOCKET VSocket;
-#else
-typedef int VSocket;
-#include <fcntl.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/wait.h>
-#include <signal.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-
-typedef unsigned int uint32;
-typedef int int32;
-typedef unsigned short uint16;
-typedef short int16;
-typedef unsigned char uint8;
-typedef char int8;
-typedef unsigned char boolean;
-
-#include "v_cmd_gen.h"
-#include "v_network.h"
-
-#if !defined socklen_t
-#define socklen_t int
-#endif
-
-#define TRUE 1
-#define FALSE 0
-
-typedef struct{
- struct sockaddr_in address;
- struct hostent *he;
-} VNetworkConnection;
-
-#define VERSE_STD_CONNECT_TO_PORT 4950
-
-static VSocket my_socket = -1;
-static uint16 my_port = 0;
-
-void v_n_set_port(unsigned short port)
-{
- my_port = port;
-}
-
-VSocket v_n_socket_create(void)
-{
- static boolean initialized = FALSE;
- struct sockaddr_in address;
- int buffer_size = 1 << 20;
-
- if(my_socket != -1)
- return my_socket;
-#if defined _WIN32
- if(!initialized)
- {
- WSADATA wsaData;
-
- if(WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)
- {
- fprintf(stderr, "WSAStartup failed.\n");
- exit(1);
- }
-
- }
-#endif
- initialized = TRUE;
- if((my_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)
- return -1;
-#if defined _WIN32
- {
- unsigned long one = 1UL;
- if(ioctlsocket(my_socket, FIONBIO, &one) != 0)
- return -1;
- }
-#else
- if(fcntl(my_socket, F_SETFL, O_NONBLOCK) != 0)
- {
- fprintf(stderr, "v_network: Couldn't make socket non-blocking\n");
- return -1;
- }
-#endif
- address.sin_family = AF_INET; /* host byte order */
- address.sin_port = htons(my_port); /* short, network byte order */
- address.sin_addr.s_addr = INADDR_ANY;
- if(bind(my_socket, (struct sockaddr *) &address, sizeof(struct sockaddr)) != 0)
- {
- fprintf(stderr, "v_network: Failed to bind(), code %d (%s)\n", errno, strerror(errno));
- exit(0); /* FIX ME */
- }
- if(setsockopt(my_socket, SOL_SOCKET, SO_SNDBUF, (const char *) &buffer_size, sizeof buffer_size) != 0)
- fprintf(stderr, "v_network: Couldn't set send buffer size of socket to %d\n", buffer_size);
- if(setsockopt(my_socket, SOL_SOCKET, SO_RCVBUF, (const char *) &buffer_size, sizeof buffer_size) != 0)
- fprintf(stderr, "v_network: Couldn't set receive buffer size of socket to %d\n", buffer_size);
- return my_socket;
-}
-
-void v_n_socket_destroy(void)
-{
-#if defined _WIN32
- closesocket(my_socket);
-#else
- close(my_socket);
-#endif
- my_socket = -1;
-}
-
-boolean v_n_set_network_address(VNetworkAddress *address, const char *host_name)
-{
- struct hostent *he;
- char *colon = NULL, *buf = NULL;
- boolean ok = FALSE;
-
- v_n_socket_create();
- address->port = VERSE_STD_CONNECT_TO_PORT;
- /* If a port number is included, as indicated by a colon, we need to work a bit more. */
- if((colon = strchr(host_name, ':')) != NULL)
- {
- size_t hl = strlen(host_name);
-
- if((buf = malloc(hl + 1)) != NULL)
- {
- unsigned int tp;
-
- strcpy(buf, host_name);
- colon = buf + (colon - host_name);
- *colon = '\0';
- host_name = buf;
- if(sscanf(colon + 1, "%u", &tp) == 1)
- {
- address->port = (unsigned short) tp;
- if(address->port != tp) /* Protect against overflow. */
- host_name = NULL;
- }
- else
- host_name = NULL; /* Protect against parse error. */
- }
- else
- return FALSE;
- }
- if(host_name != NULL && (he = gethostbyname(host_name)) != NULL)
- {
- memcpy(&address->ip, he->h_addr_list[0], he->h_length);
- address->ip = ntohl(address->ip);
- ok = TRUE;
- }
- if(buf != NULL)
- free(buf);
-
- return ok;
-}
-
-int v_n_send_data(VNetworkAddress *address, const char *data, size_t length)
-{
- struct sockaddr_in address_in;
- VSocket sock;
- int ret;
-
- if((sock = v_n_socket_create()) == -1 || length == 0)
- return 0;
- address_in.sin_family = AF_INET; /* host byte order */
- address_in.sin_port = htons(address->port); /* short, network byte order */
- address_in.sin_addr.s_addr = htonl(address->ip);
- memset(&address_in.sin_zero, 0, sizeof address_in.sin_zero);
- ret = sendto(sock, data, length, 0, (struct sockaddr *) &address_in, sizeof(struct sockaddr_in));
- if(ret < 0)
- fprintf(stderr, "Socket sendto() of %u bytes failed, code %d (%s)\n", (unsigned int) length, errno, strerror(errno));
- return ret;
-}
-
-#if !defined V_GENERATE_FUNC_MODE
-
-extern void *v_con_get_network_address_id(unsigned int id);
-extern unsigned int v_con_get_network_address_count();
-
-unsigned int v_n_wait_for_incoming(unsigned int microseconds)
-{
- struct timeval tv;
- fd_set fd_select;
- unsigned int s1, f1, s2, f2;
-
- if(microseconds == 0)
- return 0;
- v_n_socket_create();
- tv.tv_sec = microseconds / 1000000;
- tv.tv_usec = microseconds % 1000000;
- FD_ZERO(&fd_select);
- FD_SET(my_socket, &fd_select);
- v_n_get_current_time(&s1, &f1);
- select(1, &fd_select, NULL, NULL, &tv);
- v_n_get_current_time(&s2, &f2);
- return (unsigned int) (1000000 * (s2 - s1) + (1000000.0 / 0xffffffffu) * (long) (f2 - f1)); /* Must cast to (long) for f1 > f2 case! */
-}
-
-#endif
-
-int v_n_receive_data(VNetworkAddress *address, char *data, size_t length)
-{
- struct sockaddr_in address_in;
- socklen_t from_length = sizeof address_in;
- size_t len;
-
- if(v_n_socket_create() == -1)
- return 0;
- memset(&address_in, 0, sizeof address_in);
- address_in.sin_family = AF_INET;
- address_in.sin_port = htons(my_port);
- address_in.sin_addr.s_addr = INADDR_ANY;
- len = recvfrom(v_n_socket_create(), data, length, 0, (struct sockaddr *) &address_in, &from_length);
- if(len > 0)
- {
- address->ip = ntohl(address_in.sin_addr.s_addr);
- address->port = ntohs(address_in.sin_port);
- }
- return len;
-}
-
-#if defined _WIN32
-
-void v_n_get_current_time(uint32 *seconds, uint32 *fractions)
-{
- static LARGE_INTEGER frequency;
- static boolean init = FALSE;
- LARGE_INTEGER counter;
-
- if(!init)
- {
- init = TRUE;
- QueryPerformanceFrequency(&frequency);
- }
-
- QueryPerformanceCounter(&counter);
- if(seconds != NULL)
- *seconds = (uint32) (counter.QuadPart / frequency.QuadPart);
- if(fractions != NULL)
- *fractions = (uint32) ((0xffffffffUL * (counter.QuadPart % frequency.QuadPart)) / frequency.QuadPart);
-}
-
-#else
-
-void v_n_get_current_time(uint32 *seconds, uint32 *fractions)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
- if(seconds != NULL)
- *seconds = tv.tv_sec;
- if(fractions != NULL)
- *fractions = tv.tv_usec * 1E-6 * (double) (uint32)~0;
-}
-
-#endif
-
-void v_n_get_address_string(const VNetworkAddress *address, char *string)
-{
- sprintf(string, "%u.%u.%u.%u:%u", address->ip >> 24, (address->ip >> 16) & 0xff,
- (address->ip >> 8) & 0xff, address->ip & 0xff, address->port);
-}
diff --git a/extern/verse/dist/v_network.h b/extern/verse/dist/v_network.h
deleted file mode 100644
index 52233cbe2bb..00000000000
--- a/extern/verse/dist/v_network.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-**
-*/
-
-#if !defined V_NETWORK_H
-#define V_NETWORK_H
-
-#define VERSE_STD_CONNECT_PORT 4950
-
-typedef struct{
- unsigned int ip;
- unsigned short port;
-}VNetworkAddress;
-
-extern void v_n_set_port(unsigned short port);
-extern unsigned int v_n_wait_for_incoming(unsigned int microseconds);
-extern boolean v_n_set_network_address(VNetworkAddress *address, const char *host_name);
-extern int v_n_send_data(VNetworkAddress *address, const char *data, size_t length);
-extern int v_n_receive_data(VNetworkAddress *address, char *data, size_t length);
-extern void v_n_get_address_string(const VNetworkAddress *address, char *string);
-
-extern void v_n_get_current_time(unsigned int *seconds, unsigned int *fractions);
-
-#endif /* V_NETWORK_H */
diff --git a/extern/verse/dist/v_network_in_que.c b/extern/verse/dist/v_network_in_que.c
deleted file mode 100644
index d99a4ad11ec..00000000000
--- a/extern/verse/dist/v_network_in_que.c
+++ /dev/null
@@ -1,140 +0,0 @@
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "verse_header.h"
-
-#include "v_cmd_buf.h"
-#include "v_cmd_gen.h"
-#include "v_connection.h"
-#include "v_internal_verse.h"
-#include "v_network.h"
-#include "v_pack.h"
-
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#include "v_network_in_que.h"
-
-static VNetInPacked *v_niq_temp = NULL;
-
-void v_niq_clear(VNetInQueue *queue)
-{
- queue->oldest = NULL;
- queue->newest = NULL;
- queue->packet_id = 2;
- v_niq_timer_update(queue);
-}
-
-/* Set queue's last-used timestamp to "now". */
-void v_niq_timer_update(VNetInQueue *queue)
-{
- v_n_get_current_time(&queue->seconds, &queue->fractions);
- queue->acc_seconds = queue->acc_fractions = 0;
-}
-
-uint32 v_niq_time_out(VNetInQueue *queue)
-{
- uint32 fractions, f;
-
- /* Magic code to disregard if the clock moves forward more than one second at a time.
- * This should help keep Verse alive on e.g. a notebook that is suspended.
- */
- v_n_get_current_time(NULL, &fractions);
- if(fractions < queue->fractions)
- f = 0xffffffffu - queue->fractions + fractions;
- else
- f = fractions - queue->fractions;
-/* printf("now=%u last=%u -> f=%u\n", fractions, queue->fractions, f);*/
- if(queue->acc_fractions + f < queue->acc_fractions)
- queue->acc_seconds += 1;
- queue->acc_fractions += f;
- queue->fractions = fractions;
-
-/* printf("queue at %p has seconds=%u, now=%u -> diff=%u\n", queue, queue->seconds, seconds, seconds - queue->seconds);*/
- return queue->acc_seconds;
-}
-
-VNetInPacked * v_niq_get(VNetInQueue *queue, size_t *length)
-{
- VNetInPacked *p;
-
- if(queue->oldest == NULL)
- {
- *length = 0;
- return NULL;
- }
- /* pop oldest package */
- p = queue->oldest;
- queue->oldest = p->newer;
- if(queue->oldest == NULL)
- queue->newest = NULL;
- else
- ((VNetInPacked *)queue->oldest)->older = NULL;
- *length = p->size;
-
- return p;
-}
-
-unsigned int v_niq_free(VNetInQueue *queue)
-{
- unsigned int i;
- size_t length;
-
- for(i = 0; v_niq_get(queue, &length) != NULL; i++)
- ;
- return i;
-}
-
-void v_niq_release(VNetInQueue *queue, VNetInPacked *p)
-{
- /* push on v_niq_temp for re-use */
- p->older = v_niq_temp;
- v_niq_temp = p;
-}
-
-char *v_niq_store(VNetInQueue *queue, size_t length, unsigned int packet_id)
-{
- VNetInPacked *p;
-
- v_niq_timer_update(queue);
-
- if(packet_id < queue->packet_id)
- return NULL;
-
- while(queue->packet_id != packet_id)
- {
- verse_send_packet_nak(queue->packet_id++);
- if(queue->packet_id == 0)
- queue->packet_id++;
- }
- queue->packet_id++;
- if(queue->packet_id == 0)
- queue->packet_id++;
- verse_send_packet_ack(packet_id);
-
- if(v_niq_temp == NULL)
- p = malloc(sizeof *p);
- else
- {
- /* pop off v_niq_temp */
- p = v_niq_temp;
- v_niq_temp = p->older;
- }
- /* push as newest */
- p->older = queue->newest;
- p->newer = NULL;
-
- if(queue->newest == NULL)
- queue->oldest = p;
- else
- ((VNetInPacked *)queue->newest)->newer = p;
- queue->newest = p;
-
- p->size = length;
-
- return p->data;
-}
-
-#endif
diff --git a/extern/verse/dist/v_network_in_que.h b/extern/verse/dist/v_network_in_que.h
deleted file mode 100644
index 9241fe18fe8..00000000000
--- a/extern/verse/dist/v_network_in_que.h
+++ /dev/null
@@ -1,24 +0,0 @@
-
-typedef struct{
- void *oldest;
- void *newest;
- uint32 packet_id;
- uint32 seconds, fractions; /* Current time. */
- uint32 acc_seconds, acc_fractions; /* Accumulated time. */
-}VNetInQueue;
-
-typedef struct{
- void *newer;
- void *older;
- char data[1500];
- size_t size;
-}VNetInPacked;
-
-extern void v_niq_clear(VNetInQueue *queue);
-extern void v_niq_timer_update(VNetInQueue *queue);
-
-extern VNetInPacked * v_niq_get(VNetInQueue *queue, size_t *length);
-extern void v_niq_release(VNetInQueue *queue, VNetInPacked *p);
-extern char * v_niq_store(VNetInQueue *queue, size_t length, unsigned int packet_id);
-unsigned int v_niq_free(VNetInQueue *queue);
-extern uint32 v_niq_time_out(VNetInQueue *queue);
diff --git a/extern/verse/dist/v_network_out_que.c b/extern/verse/dist/v_network_out_que.c
deleted file mode 100644
index 10126a59779..00000000000
--- a/extern/verse/dist/v_network_out_que.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "verse_header.h"
-
-#include "v_cmd_buf.h"
-#include "v_cmd_gen.h"
-#include "v_connection.h"
-#include "v_network.h"
-#include "v_pack.h"
-#include "v_encryption.h"
-#include "v_network_out_que.h"
-#include "v_util.h"
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#define STD_QUE_SIZE 64
-
-#define V_NOQ_OPTIMIZATION_SLOTS 2048
-
-#define V_NOQ_WINDOW_SIZE 100000
-#define V_NOQ_MAX_SORTED_COMMANDS 5000
-
-typedef struct{
- void *next;
- char *data;
- size_t size;
-} NetPacked;
-
-struct VNetOutQueue{
- uint8 packet_buffer[V_NOQ_MAX_PACKET_SIZE];
- size_t packet_buffer_use;
- NetPacked *packed;
- NetPacked *last;
- VCMDBufHead *unsent[V_NOQ_OPTIMIZATION_SLOTS];
- VCMDBufHead *history[V_NOQ_OPTIMIZATION_SLOTS];
- VCMDBufHead *ack_nak;
- VCMDBufHead *unsorted;
- VCMDBufHead *unsorted_end;
- uint32 unsorted_count; /* debug only */
- uint32 unsent_comands;
- size_t unsent_size;
- size_t sent_size;
- unsigned int packet_id;
- unsigned int slot;
- uint32 seconds;
- uint32 fractions;
-};
-
-size_t verse_session_get_size(void)
-{
- const VNetOutQueue *queue;
-
- queue = v_con_get_network_queue();
- return queue->unsent_size + queue->sent_size;
-}
-
-VNetOutQueue * v_noq_create_network_queue(void)
-{
- VNetOutQueue *queue;
- unsigned int i;
-
- queue = malloc(sizeof *queue);
- for(i = 0; i < V_NOQ_OPTIMIZATION_SLOTS; i++)
- {
- queue->unsent[i] = NULL;
- queue->history[i] = NULL;
- }
- queue->unsent_comands = 0;
- queue->unsent_size = 0;
- queue->sent_size = 0;
- queue->packet_id = 2;
- queue->slot = 0;
- queue->packed = NULL;
- queue->last = NULL;
- queue->ack_nak = NULL;
- queue->unsorted = NULL;
- queue->unsorted_end = NULL;
- queue->unsorted_count = 0;
- queue->packet_buffer_use = 0;
- v_n_get_current_time(&queue->seconds, &queue->fractions);
- return queue;
-}
-
-unsigned int v_noq_get_next_out_packet_id(VNetOutQueue *queue)
-{
- queue->packet_id++;
- if(queue->packet_id == 0)
- queue->packet_id++;
- return queue->packet_id;
-}
-
-void v_noq_destroy_network_queue(VNetOutQueue *queue)
-{
- VCMDBufHead *buf, *b;
- unsigned int i;
- for(i = 0; i < V_NOQ_OPTIMIZATION_SLOTS; i++)
- {
- for(buf = queue->history[i]; buf != NULL; buf = b)
- {
- b = buf->next;
- v_cmd_buf_free(buf);
- }
- for(buf = queue->unsent[i]; buf != NULL; buf = b)
- {
- b = buf->next;
- v_cmd_buf_free(buf);
- }
- }
- for(buf = queue->unsorted; buf != NULL; buf = b)
- {
- b = buf->next;
- v_cmd_buf_free(buf);
- }
- free(queue);
-}
-
-
-void v_noq_sort_and_collapse_buf(VNetOutQueue *queue, VCMDBufHead *buf)
-{
- VCMDBufHead *b, *last = NULL;
- unsigned int slot;
-
- slot = buf->address_sum % V_NOQ_OPTIMIZATION_SLOTS;
- queue->unsent_size += buf->size;
- queue->unsent_comands++;
- if(queue->unsent[slot] != NULL)
- {
- for(b = queue->unsent[slot]; !v_cmd_buf_compare(buf, b) && b->next != NULL; b = b->next)
- last = b;
- if(v_cmd_buf_compare(buf, b)) /* found a command to replace */
- {
- queue->unsent_size -= b->size;
- queue->unsent_comands--;
- if(last != NULL) /* if its not the first */
- last->next = buf;
- else
- queue->unsent[slot] = buf;
- buf->next = b->next;
- v_cmd_buf_free(b);
- }else /* inserting the command last in queue */
- {
- buf->next = NULL;
- b->next = buf;
- }
- }else /* inserting the first command */
- {
- queue->unsent[slot] = buf;
- buf->next = NULL;
- }
- if(queue->history[slot] != NULL) /* if there is a history clear it from any commnds with same address */
- {
- last = NULL;
- for(b = queue->history[slot]; b != NULL && !v_cmd_buf_compare(buf, b); b = b->next)
- last = b;
- if(b != NULL) /* found a command to replace */
- {
- if(last == NULL)
- queue->history[slot] = b->next;
- else
- last->next = b->next;
- queue->sent_size -= b->size;
- v_cmd_buf_free(b);
- }
- }
-}
-
-void v_noq_send_buf(VNetOutQueue *queue, VCMDBufHead *buf)
-{
- static int count = 0;
-/* if(queue->unsent_comands > V_NOQ_MAX_SORTED_COMMANDS)
- {
-
-*/ if(queue->unsorted == NULL)
- {
- queue->unsorted_end = buf;
- queue->unsorted = buf;
- }else
- {
- queue->unsorted_end->next = buf;
- queue->unsorted_end = buf;
- }
- queue->unsorted_count++;
-/* }else
- v_noq_sort_and_colapse_buf(queue, buf);
-*/ count = (count + 1) % 30;
- if(count == 0)
- {
- v_con_network_listen();
- v_noq_send_queue(queue, v_con_get_network_address());
- }
-}
-
-void v_noq_sort_unsorted(VNetOutQueue *queue)
-{
- VCMDBufHead *buf;
-
- while(queue->unsent_comands < V_NOQ_MAX_SORTED_COMMANDS && queue->unsorted != NULL)
- {
- buf = queue->unsorted;
- if(queue->unsorted == queue->unsorted_end)
- {
- queue->unsorted_end = NULL;
- queue->unsorted = NULL;
- }else
- {
- queue->unsorted = buf->next;
- buf->next = NULL;
- }
- queue->unsorted_count--;
- v_noq_sort_and_collapse_buf(queue, buf);
- }
-}
-
-boolean v_noq_send_queue(VNetOutQueue *queue, void *address)
-{
- static unsigned int my_counter = 0;
- VCMDBufHead *buf;
- unsigned int size;
- uint8 *data;
- uint32 seconds, fractions;
- double delta;
-
- data = queue->packet_buffer;
- v_n_get_current_time(&seconds, &fractions);
- delta = seconds - queue->seconds + (fractions - queue->fractions) / (double) 0xffffffff;
-
- if(queue->unsorted != NULL)
- v_noq_sort_unsorted(queue);
-
- if(queue->unsent_size == 0 && delta < 1.0 && (queue->ack_nak == NULL || queue->ack_nak->next == NULL))
- return FALSE;
-
- if(delta > 3.0 && queue->unsent_size == 0 && queue->ack_nak == NULL && queue->packet_buffer_use != 0)
- {
-/* printf("A) re-sending last delta=%g\n", delta);*/
- v_n_send_data(address, data, queue->packet_buffer_use);
- queue->seconds = seconds;
- queue->fractions = fractions;
- return TRUE;
- }
-
- size = 4;
- buf = queue->ack_nak;
- while(buf != NULL && size + buf->size < V_NOQ_MAX_PACKET_SIZE)
- {
- vnp_raw_pack_uint32(data, queue->packet_id);
- queue->ack_nak = buf->next;
- buf->next = queue->history[queue->slot];
- queue->history[queue->slot] = buf;
- buf->packet = queue->packet_id;
- v_e_data_encrypt_command(data, size, ((VCMDBuffer1500 *)buf)->buf, buf->size, v_con_get_data_key());
- size += buf->size;
- queue->sent_size += buf->size;
- buf = queue->ack_nak;
- }
- if(queue->unsent_size == 0 || queue->sent_size >= V_NOQ_WINDOW_SIZE)
- {
- if(size > 5)
- {
-/* printf("ACK: sending actual size=%u id=%u\n", size, queue->packet_id);*/
- v_n_send_data(address, data, size);
- queue->packet_buffer_use = size;
- queue->seconds = seconds;
- queue->fractions = fractions;
- queue->packet_id++;
- return TRUE;
- }
-/* printf("returning FALSE from send_queue()\n");*/
- return FALSE;
- }
-/* if(queue->sent_size < V_NOQ_WINDOW_SIZE && queue->unsent_size != 0)*/
- {
- vnp_raw_pack_uint32(data, queue->packet_id);
- while(queue->unsent_size != 0)
- {
- queue->slot = ((1 + queue->slot) % V_NOQ_OPTIMIZATION_SLOTS);
- buf = queue->unsent[queue->slot];
- if(buf != NULL)
- {
- if(buf->size + size > V_NOQ_MAX_PACKET_SIZE)
- break;
- queue->unsent[queue->slot] = buf->next;
- buf->next = queue->history[queue->slot];
- queue->history[queue->slot] = buf;
- buf->packet = queue->packet_id;
-
- v_e_data_encrypt_command(data, size, ((VCMDBuffer1500 *)buf)->buf, buf->size, v_con_get_data_key());
- size += buf->size;
- queue->unsent_comands--;
- queue->unsent_size -= buf->size;
- queue->sent_size += buf->size;
- my_counter++;
- }
- }
- v_n_send_data(address, data, size);
- queue->packet_buffer_use = size;
- queue->packet_id++;
-/* size = vnp_raw_pack_uint32(data, queue->packet_id);*/
- queue->seconds = seconds;
- queue->fractions = fractions;
- }
- return TRUE;
-}
-
-void v_noq_send_ack_nak_buf(VNetOutQueue *queue, VCMDBufHead *buf)
-{
- buf->next = queue->ack_nak;
- queue->ack_nak = buf;
-}
-
-void callback_send_packet_ack(void *user, uint32 packet_id)
-{
- VNetOutQueue *queue;
- VCMDBufHead *buf, *last;
- unsigned int slot;
-
- queue = v_con_get_network_queue();
- for(slot = 0; slot < V_NOQ_OPTIMIZATION_SLOTS; slot++)
- {
- last = NULL;
- for(buf = queue->history[slot]; buf != NULL && buf->packet != packet_id; buf = buf->next)
- last = buf;
-
- if(buf != NULL)
- {
- if(last == NULL)
- {
- while(queue->history[slot] != NULL && queue->history[slot]->packet == packet_id)
- {
- queue->sent_size -= queue->history[slot]->size;
- buf = queue->history[slot]->next;
- v_cmd_buf_free(queue->history[slot]);
- queue->history[slot] = buf;
- }
- }else
- {
- for(; buf != NULL && buf->packet == packet_id; buf = last->next)
- {
- queue->sent_size -= buf->size;
- last->next = buf->next;
- v_cmd_buf_free(buf);
- }
- }
- }
- }
-}
-
-void callback_send_packet_nak(void *user, uint32 packet_id)
-{
- VNetOutQueue *queue;
- VCMDBufHead *buf, *last;
- unsigned int slot;
-
- queue = v_con_get_network_queue();
- for(slot = 0; slot < V_NOQ_OPTIMIZATION_SLOTS; slot++)
- {
- last = NULL;
- for(buf = queue->history[slot]; buf != NULL && buf->packet != packet_id; buf = buf->next)
- last = buf;
- if(buf != NULL)
- {
- if(last == NULL)
- {
- for(; queue->history[slot] != NULL && queue->history[slot]->packet == packet_id; queue->history[slot] = buf)
- {
- queue->unsent_comands++;
- queue->unsent_size += queue->history[slot]->size;
- queue->sent_size -= queue->history[slot]->size;
- buf = queue->history[slot]->next;
- queue->history[slot]->next = queue->unsent[slot];
- queue->unsent[slot] = queue->history[slot];
- }
- }else
- {
- for(; last->next != NULL && ((VCMDBufHead *)last->next)->packet == packet_id;)
- {
- queue->unsent_comands++;
- queue->unsent_size += ((VCMDBufHead *)last->next)->size;
- queue->sent_size -= ((VCMDBufHead *)last->next)->size;
- buf = last->next;
- last->next = buf->next;
- buf->next = queue->unsent[slot];
- queue->unsent[slot] = buf;
- }
- }
- }
- }
-}
-
-#endif
diff --git a/extern/verse/dist/v_network_out_que.h b/extern/verse/dist/v_network_out_que.h
deleted file mode 100644
index 6746475e84f..00000000000
--- a/extern/verse/dist/v_network_out_que.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-**
-*/
-
-typedef struct VNetOutQueue VNetOutQueue;
-
-extern VNetOutQueue * v_noq_create_network_queue(void);
-extern void v_noq_destroy_network_queue(VNetOutQueue *queue);
-extern void v_noq_send_buf(VNetOutQueue *queue, VCMDBufHead *buf);
-extern void v_noq_send_ack_nak_buf(VNetOutQueue *queue, VCMDBufHead *buf);
-
-extern void v_noq_send_ack(VNetOutQueue *queue, unsigned int id);
-extern void v_noq_send_nak(VNetOutQueue *queue, unsigned int id);
-
-extern boolean v_noq_send_queue(VNetOutQueue *queue, void *address);
-
-extern unsigned int v_noq_get_next_out_packet_id(VNetOutQueue *queue);
diff --git a/extern/verse/dist/v_pack.c b/extern/verse/dist/v_pack.c
deleted file mode 100644
index f521360b11f..00000000000
--- a/extern/verse/dist/v_pack.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
-** v_pack.c
-**
-** These functions are used to pack and unpack various quantities to/from network
-** packet buffers. They do not care about alignment, operating at byte level internally.
-** The external byte-ordering used is big-endian (aka "network byte order") for all
-** quantities larger than a single byte.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "v_pack.h"
-
-size_t vnp_raw_pack_uint8(void *buffer, uint8 data)
-{
- *(uint8 *) buffer = data;
-
- return sizeof data;
-}
-
-size_t vnp_raw_unpack_uint8(const void *buffer, uint8 *data)
-{
- *data = *(uint8 *) buffer;
-
- return sizeof *data;
-}
-
-size_t vnp_raw_pack_uint8_vector(void *buffer, const uint8 *data, unsigned int length)
-{
- memcpy(buffer, data, length);
- return length;
-}
-
-size_t vnp_raw_unpack_uint8_vector(const void *buffer, uint8 *data, unsigned int length)
-{
- memcpy(data, buffer, length);
- return length;
-}
-
-size_t vnp_raw_pack_uint16(void *buffer, uint16 data)
-{
- *(uint8 *) buffer = (data & 0xFF00) >> 8;
- *((uint8 *) buffer + 1) = data & 0xFF;
- return sizeof data;
-}
-
-size_t vnp_raw_unpack_uint16(const void *buffer, uint16 *data)
-{
- register const uint8 *b = buffer;
- register uint16 tmp;
-
- tmp = ((uint16) *b++) << 8;
- tmp |= (uint16) *b;
- *data = tmp;
- return sizeof *data;
-}
-
-size_t vnp_raw_pack_uint16_vector(void *buffer, const uint16 *data, unsigned int length)
-{
- register uint8 *b = buffer;
- unsigned int i;
- for(i = 0; i < length; i++)
- {
- *b++ = (*data & 0xFF00) >> 8;
- *b++ = *data & 0xFF;
- data++;
- }
- return length * 2;
-}
-
-size_t vnp_raw_unpack_uint16_vector(const void *buffer, uint16 *data, unsigned int length)
-{
- register const uint8 *b = buffer;
- uint16 *end;
-
- for(end = data + length; end != data; data++)
- {
- *data = ((uint16) *b++) << 8;
- *data |= (uint16) *b++;
- }
- return length * 2;
-}
-
-size_t vnp_raw_pack_uint24(void *buffer, uint32 data)
-{
- register uint8 *p = buffer;
-
- data >>= 8;
- *(p++) = (data >> 24) & 0xFF;
- *(p++) = (data >> 16) & 0xFF;
- *(p++) = (data >> 8) & 0xFF;
-
- return 3;
-}
-
-size_t vnp_raw_unpack_uint24(const void *buffer, uint32 *data)
-{
- register const uint8 *p = buffer;
- register uint32 tmp = 0;
-
- tmp |= ((uint32) *p++) << 24;
- tmp |= ((uint32) *p++) << 16;
- tmp |= ((uint32) *p++) << 8;
- tmp |= tmp >> 24;
-
- return 3;
-}
-
-size_t vnp_raw_pack_uint24_vector(void *buffer, const uint32 *data, unsigned int length)
-{
- register uint8 *b = buffer;
- unsigned int i;
-
- for(i = 0; i < length; i++)
- {
- *b++ = (*data >> 24) & 0xFF;
- *b++ = (*data >> 16) & 0xFF;
- *b++ = (*data >> 8) & 0xFF;
- data++;
- }
- return length * 3;
-}
-
-size_t vnp_raw_unpack_uint24_vector(const void *buffer, uint32 *data, unsigned int length)
-{
- register const uint8 *b = buffer;
- register uint32 tmp;
- uint32 *end;
- for(end = data + length; end != data; data++)
- {
- tmp = ((uint32) *b++) << 24;
- tmp |= ((uint32) *b++) << 16;
- tmp |= ((uint32) *b++) << 8;
- tmp |= tmp >> 24;
- *data = tmp;
- }
- return length * 3;
-}
-
-size_t vnp_raw_pack_uint32(void *buffer, uint32 data)
-{
- register uint8 *b = buffer;
-
- *b++ = (data >> 24) & 0xFF;
- *b++ = (data >> 16) & 0xFF;
- *b++ = (data >> 8) & 0xFF;
- *b++ = data & 0xFF;
-
- return sizeof data;
-}
-
-size_t vnp_raw_unpack_uint32(const void *buffer, uint32 *data)
-{
- register const uint8 *b = buffer;
-
- *data = ((uint32) *b++) << 24;
- *data |= ((uint32) *b++) << 16;
- *data |= ((uint32) *b++) << 8;
- *data |= *b;
- return sizeof *data;
-}
-
-size_t vnp_raw_pack_uint32_vector(void *buffer, const uint32 *data, unsigned int length)
-{
- register uint8 *b = buffer;
- unsigned int i;
-
- for(i = 0; i < length; i++)
- {
- *b++ = (*data >> 24) & 0xFF;
- *b++ = (*data >> 16) & 0xFF;
- *b++ = (*data >> 8) & 0xFF;
- *b++ = *data & 0xFF;
- data++;
- }
- return length * 4;
-}
-
-size_t vnp_raw_unpack_uint32_vector(const void *buffer, uint32 *data, unsigned int length)
-{
- register const uint8 *b = buffer;
- uint32 *end;
- for(end = data + length; end != data; data++)
- {
- *data = ((uint32) *b++) << 24;
- *data |= ((uint32) *b++) << 16;
- *data |= ((uint32) *b++) << 8;
- *data |= ((uint32) *b++);
- }
- return length * 4;
-}
-
-size_t vnp_raw_pack_real32(void *buffer, real32 data)
-{
- union { uint32 uint; real32 real; } punt;
- punt.real = data;
- return vnp_raw_pack_uint32(buffer, punt.uint);
-}
-
-size_t vnp_raw_unpack_real32(const void *buffer, real32 *data)
-{
- return vnp_raw_unpack_uint32(buffer, (uint32 *) data);
-}
-
-size_t vnp_raw_pack_real32_vector(void *buffer, const real32 *data, unsigned int length)
-{
- uint32 i;
- for(i = 0; i < length; i++)
- vnp_raw_pack_real32(&((uint8 *)buffer)[i * 4], data[i]);
- return length * 4;
-}
-
-size_t vnp_raw_unpack_real32_vector(const void *buffer, real32 *data, unsigned int length)
-{
- uint32 i;
- for(i = 0; i < length; i++)
- vnp_raw_unpack_real32(&((uint8 *)buffer)[i * 4], &data[i]);
- return length * 4;
-}
-
-size_t vnp_raw_pack_real64(void *buffer, real64 data)
-{
- union { uint32 uint[2]; real64 real; } punt;
- uint32 size;
-
- punt.real = data;
- size = vnp_raw_pack_uint32(buffer, punt.uint[0]);
- buffer = (uint8 *) buffer + size;
- size += vnp_raw_pack_uint32(buffer, punt.uint[1]);
- return size;
-}
-
-size_t vnp_raw_unpack_real64(const void *buffer, real64 *data)
-{
- union { uint32 uint[2]; real64 real; } punt;
- uint32 size;
-
- size = vnp_raw_unpack_uint32(buffer, &punt.uint[0]);
- size += vnp_raw_unpack_uint32(((uint8 *)buffer) + size, &punt.uint[1]);
- *data = punt.real;
- return size;
-}
-
-size_t vnp_raw_pack_real64_vector(void *buffer, const real64 *data, unsigned int length)
-{
- uint32 i;
- for(i = 0; i < length; i++)
- vnp_raw_pack_real64(&((uint8 *)buffer)[i * 8], data[i]);
- return length * 8;
-}
-
-size_t vnp_raw_unpack_real64_vector(const void *buffer, real64 *data, unsigned int length)
-{
- uint32 i;
- for(i = 0; i < length; i++)
- vnp_raw_unpack_real64(&((uint8 *)buffer)[i * 8], &data[i]);
- return length * 8;
-}
-
-size_t vnp_raw_pack_string(void *buffer, const char *string, size_t max_size)
-{
- unsigned int i = 0;
- char *p = buffer;
- if(string != 0)
- for(; i < max_size && string[i] != 0; i++)
- p[i] = string[i];
- p[i] = 0;
- return ++i;
-}
-
-size_t vnp_raw_unpack_string(const void *buffer, char *string, size_t max_size, size_t max_size2)
-{
- unsigned int i;
- const char *p = buffer;
-
- max_size--;
- max_size2--;
- for(i = 0; i < max_size && i < max_size2 && p[i] != 0; i++)
- string[i] = p[i];
- string[i] = 0;
- return ++i;
-}
-
-/* --------------------------------------------------------------------------------------------------- */
-
-size_t vnp_pack_quat32(void *buffer, const VNQuat32 *data)
-{
- uint8 *out = buffer;
-
- if(data == NULL)
- return 0;
- out += vnp_raw_pack_real32(out, data->x);
- out += vnp_raw_pack_real32(out, data->y);
- out += vnp_raw_pack_real32(out, data->z);
- out += vnp_raw_pack_real32(out, data->w);
-
- return out - (uint8 *) buffer;
-}
-
-size_t vnp_unpack_quat32(const void *buffer, VNQuat32 *data)
-{
- const uint8 *in = buffer;
-
- if(data == NULL)
- return 0;
- in += vnp_raw_unpack_real32(in, &data->x);
- in += vnp_raw_unpack_real32(in, &data->y);
- in += vnp_raw_unpack_real32(in, &data->z);
- in += vnp_raw_unpack_real32(in, &data->w);
-
- return in - (uint8 *) buffer;
-}
-
-size_t vnp_pack_quat64(void *buffer, const VNQuat64 *data)
-{
- uint8 *out = buffer;
-
- if(data == NULL)
- return 0;
- out += vnp_raw_pack_real64(out, data->x);
- out += vnp_raw_pack_real64(out, data->y);
- out += vnp_raw_pack_real64(out, data->z);
- out += vnp_raw_pack_real64(out, data->w);
-
- return out - (uint8 *) buffer;
-}
-
-size_t vnp_unpack_quat64(const void *buffer, VNQuat64 *data)
-{
- const uint8 *in = buffer;
-
- if(data == NULL)
- return 0;
- in += vnp_raw_unpack_real64(in, &data->x);
- in += vnp_raw_unpack_real64(in, &data->y);
- in += vnp_raw_unpack_real64(in, &data->z);
- in += vnp_raw_unpack_real64(in, &data->w);
-
- return in - (uint8 *) buffer;
-}
-
-size_t vnp_pack_audio_block(void *buffer, VNABlockType type, const VNABlock *block)
-{
- if(block == NULL)
- return 0;
- switch(type)
- {
- case VN_A_BLOCK_INT8:
- return vnp_raw_pack_uint8_vector(buffer, block->vint8, sizeof block->vint8 / sizeof *block->vint8);
- case VN_A_BLOCK_INT16:
- return vnp_raw_pack_uint16_vector(buffer, block->vint16, sizeof block->vint16 / sizeof *block->vint16);
- case VN_A_BLOCK_INT24:
- return vnp_raw_pack_uint24_vector(buffer, block->vint24, sizeof block->vint24 / sizeof *block->vint24);
- case VN_A_BLOCK_INT32:
- return vnp_raw_pack_uint32_vector(buffer, block->vint32, sizeof block->vint32 / sizeof *block->vint32);
- case VN_A_BLOCK_REAL32:
- return vnp_raw_pack_real32_vector(buffer, block->vreal32, sizeof block->vreal32 / sizeof *block->vreal32);
- case VN_A_BLOCK_REAL64:
- return vnp_raw_pack_real64_vector(buffer, block->vreal64, sizeof block->vreal64 / sizeof *block->vreal64);
- }
- return 0;
-}
-
-size_t vnp_unpack_audio_block(const void *buffer, VNABlockType type, VNABlock *block)
-{
- if(block == NULL)
- return 0;
- switch(type)
- {
- case VN_A_BLOCK_INT8:
- return vnp_raw_unpack_uint8_vector(buffer, block->vint8, sizeof block->vint8 / sizeof *block->vint8);
- case VN_A_BLOCK_INT16:
- return vnp_raw_unpack_uint16_vector(buffer, block->vint16, sizeof block->vint16 / sizeof *block->vint16);
- case VN_A_BLOCK_INT24:
- return vnp_raw_unpack_uint24_vector(buffer, block->vint24, sizeof block->vint24 / sizeof *block->vint24);
- case VN_A_BLOCK_INT32:
- return vnp_raw_unpack_uint32_vector(buffer, block->vint32, sizeof block->vint32 / sizeof *block->vint32);
- case VN_A_BLOCK_REAL32:
- return vnp_raw_unpack_real32_vector(buffer, block->vreal32, sizeof block->vreal32 / sizeof *block->vreal32);
- case VN_A_BLOCK_REAL64:
- return vnp_raw_unpack_real64_vector(buffer, block->vreal64, sizeof block->vreal64 / sizeof *block->vreal64);
- }
- return 0;
-}
diff --git a/extern/verse/dist/v_pack.h b/extern/verse/dist/v_pack.h
deleted file mode 100644
index 60cb7225642..00000000000
--- a/extern/verse/dist/v_pack.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-** v_pack.h
-**
-** These functions are used to pack and unpack various quantities to/from network
-** packet buffers. They do not care about alignment, operating at byte level internally.
-** The external byte-ordering used is big-endian (aka "network byte order") for all
-** quantities larger than a single byte.
-*/
-
-#include "verse_header.h"
-
-extern size_t vnp_raw_pack_uint8(void *buffer, uint8 data);
-extern size_t vnp_raw_unpack_uint8(const void *buffer, uint8 *data);
-
-extern size_t vnp_raw_pack_uint16(void *buffer, uint16 data);
-extern size_t vnp_raw_unpack_uint16(const void *buffer, uint16 *data);
-
-extern size_t vnp_raw_pack_uint24(void *buffer, uint32 data);
-extern size_t vnp_raw_unpack_uint24(const void *buffer, uint32 *data);
-
-extern size_t vnp_raw_pack_uint32(void *buffer, uint32 data);
-extern size_t vnp_raw_unpack_uint32(const void *buffer, uint32 *data);
-
-extern size_t vnp_raw_pack_real32(void *buffer, real32 data);
-extern size_t vnp_raw_unpack_real32(const void *buffer, real32 *data);
-
-extern size_t vnp_raw_pack_real64(void *buffer, real64 data);
-extern size_t vnp_raw_unpack_real64(const void *buffer, real64 *data);
-
-extern size_t vnp_raw_pack_string(void *buffer, const char *string, size_t max_size);
-extern size_t vnp_raw_unpack_string(const void *buffer, char *string, size_t max_size, size_t max_size2);
-
-extern size_t vnp_raw_pack_uint8_vector(void *buffer, const uint8 *data, unsigned int length);
-extern size_t vnp_raw_unpack_uint8_vector(const void *buffer, uint8 *data, unsigned int length);
-
-extern size_t vnp_raw_pack_uint16_vector(void *buffer, const uint16 *data, unsigned int length);
-extern size_t vnp_raw_unpack_uint16_vector(const void *buffer, uint16 *data, unsigned int length);
-
-extern size_t vnp_raw_pack_uint24_vector(void *buffer, const uint32 *data, unsigned int length);
-extern size_t vnp_raw_unpack_uint24_vector(const void *buffer, uint32 *data, unsigned int length);
-
-extern size_t vnp_raw_pack_uint32_vector(void *buffer, const uint32 *data, unsigned int length);
-extern size_t vnp_raw_unpack_uint32_vector(const void *buffer, uint32 *data, unsigned int length);
-
-extern size_t vnp_raw_pack_real32_vector(void *buffer, const real32 *data, unsigned int length);
-extern size_t vnp_raw_unpack_real32_vector(const void *buffer, real32 *data, unsigned int length);
-
-extern size_t vnp_raw_pack_real64_vector(void *buffer, const real64 *data, unsigned int length);
-extern size_t vnp_raw_unpack_real64_vector(const void *buffer, real64 *data, unsigned int length);
-
-/* --------------------------------------------------------------------------------------------------- */
-
-extern size_t vnp_pack_quat32(void *buffer, const VNQuat32 *data);
-extern size_t vnp_unpack_quat32(const void *buffer, VNQuat32 *data);
-extern size_t vnp_pack_quat64(void *buffer, const VNQuat64 *data);
-extern size_t vnp_unpack_quat64(const void *buffer, VNQuat64 *data);
-
-extern size_t vnp_pack_audio_block(void *buffer, VNABlockType type, const VNABlock *block);
-extern size_t vnp_unpack_audio_block(const void *buffer, VNABlockType type, VNABlock *block);
diff --git a/extern/verse/dist/v_pack_method.c b/extern/verse/dist/v_pack_method.c
deleted file mode 100644
index c79ae92ba31..00000000000
--- a/extern/verse/dist/v_pack_method.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
-**
-*/
-
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#include "verse.h"
-#include "v_pack.h"
-
-VNOPackedParams * verse_method_call_pack(unsigned int param_count, const VNOParamType *param_type, const VNOParam *params)
-{
- unsigned int i, j, buffer_pos;
- uint8 *buf;
-
- buf = malloc(1500 + 8 * 16);
- buffer_pos = vnp_raw_pack_uint16(buf, 0);
- for(i = 0; i < param_count; i++)
- {
- switch(param_type[i])
- {
- case VN_O_METHOD_PTYPE_INT8 :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], params[i].vint8);
- break;
- case VN_O_METHOD_PTYPE_INT16 :
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], params[i].vint16);
- break;
- case VN_O_METHOD_PTYPE_INT32 :
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], params[i].vint32);
- break;
- case VN_O_METHOD_PTYPE_UINT8 :
- buffer_pos += vnp_raw_pack_uint8(&buf[buffer_pos], params[i].vuint8);
- break;
- case VN_O_METHOD_PTYPE_UINT16 :
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], params[i].vuint16);
- break;
- case VN_O_METHOD_PTYPE_UINT32 :
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], params[i].vuint32);
- break;
- case VN_O_METHOD_PTYPE_REAL32 :
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32);
- break;
- case VN_O_METHOD_PTYPE_REAL64 :
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64);
- break;
- case VN_O_METHOD_PTYPE_STRING :
- buffer_pos += vnp_raw_pack_string(&buf[buffer_pos], params[i].vstring, (1500 + 8 * 16) - buffer_pos);
- break;
- case VN_O_METHOD_PTYPE_NODE :
- buffer_pos += vnp_raw_pack_uint32(&buf[buffer_pos], params[i].vnode);
- break;
- case VN_O_METHOD_PTYPE_LAYER :
- buffer_pos += vnp_raw_pack_uint16(&buf[buffer_pos], params[i].vlayer);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC2 :
- for(j = 0; j < 2; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC3 :
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC2 :
- for(j = 0; j < 2; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC3 :
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT9 :
- for(j = 0; j < 9; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT16 :
- for(j = 0; j < 16; j++)
- buffer_pos += vnp_raw_pack_real32(&buf[buffer_pos], params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT9 :
- for(j = 0; j < 9; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT16 :
- for(j = 0; j < 16; j++)
- buffer_pos += vnp_raw_pack_real64(&buf[buffer_pos], params[i].vreal64_mat[j]);
- break;
- }
- if(buffer_pos > 1500)
- {
- free(buf);
- return NULL;
- }
- }
- vnp_raw_pack_uint16(buf, buffer_pos);
- return buf;
-}
-
-boolean verse_method_call_unpack(const VNOPackedParams *data, unsigned int param_count, const VNOParamType *param_type, VNOParam *params)
-{
- unsigned int i, j, buffer_pos = 0, len;
- uint16 size;
- const uint8 *buf;
- static char string[2048];
- char *stringput = string;
-
- buf = data;
- buffer_pos += vnp_raw_unpack_uint16(buf, &size);
- for(i = 0; i < param_count; i++)
- {
- switch(param_type[i])
- {
- case VN_O_METHOD_PTYPE_INT8 :
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &params[i].vint8);
- break;
- case VN_O_METHOD_PTYPE_INT16 :
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &params[i].vint16);
- break;
- case VN_O_METHOD_PTYPE_INT32 :
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &params[i].vint32);
- break;
- case VN_O_METHOD_PTYPE_UINT8 :
- buffer_pos += vnp_raw_unpack_uint8(&buf[buffer_pos], &params[i].vuint8);
- break;
- case VN_O_METHOD_PTYPE_UINT16 :
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &params[i].vuint16);
- break;
- case VN_O_METHOD_PTYPE_UINT32 :
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &params[i].vuint32);
- break;
- case VN_O_METHOD_PTYPE_REAL32 :
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32);
- break;
- case VN_O_METHOD_PTYPE_REAL64 :
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64);
- break;
- case VN_O_METHOD_PTYPE_STRING :
- params[i].vstring = stringput;
- len = vnp_raw_unpack_string(&buf[buffer_pos], stringput, (1500 + 8 * 16) - buffer_pos, -1);
- stringput += len;
- buffer_pos += len;
- break;
- case VN_O_METHOD_PTYPE_NODE :
- buffer_pos += vnp_raw_unpack_uint32(&buf[buffer_pos], &params[i].vnode);
- break;
- case VN_O_METHOD_PTYPE_LAYER :
- buffer_pos += vnp_raw_unpack_uint16(&buf[buffer_pos], &params[i].vlayer);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC2 :
- for(j = 0; j < 2; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC3 :
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_VEC4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC2 :
- for(j = 0; j < 2; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC3 :
- for(j = 0; j < 3; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_VEC4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_vec[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT9 :
- for(j = 0; j < 9; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL32_MAT16 :
- for(j = 0; j < 16; j++)
- buffer_pos += vnp_raw_unpack_real32(&buf[buffer_pos], &params[i].vreal32_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT4 :
- for(j = 0; j < 4; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT9 :
- for(j = 0; j < 9; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_mat[j]);
- break;
- case VN_O_METHOD_PTYPE_REAL64_MAT16 :
- for(j = 0; j < 16; j++)
- buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &params[i].vreal64_mat[j]);
- break;
- }
- }
- return TRUE;
-}
-#endif
diff --git a/extern/verse/dist/v_prime.c b/extern/verse/dist/v_prime.c
deleted file mode 100644
index cebdf4fb03d..00000000000
--- a/extern/verse/dist/v_prime.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Program to generate primes of the form p = 2 * q + 1,
- * where p and q are both primes.
- *
- * Originally written by Pontus Nyman <f97-pny@nada.kth.se>,
- * ported to Verse's bignums and rewritten from scratch by
- * Emil Brink.
- */
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_bignum.h"
-#include "v_encryption.h"
-#include "verse_header.h"
-
-#define BITS V_ENCRYPTION_LOGIN_KEY_BITS /* Save some typing. */
-
-#define CYCLES 10 /* Number of times to apply Miller-Rabin test. */
-
-/* Test divisibility of <n> against table of small known primes. Returns 1 if n looks prime, 0 if it IS not. */
-static int quick_filter(const VBigDig *n)
-{
- VBigDig VBIGNUM(m, 16), VBIGNUM(tmp, BITS / 2);
- const unsigned int prime[] = { 3, 5, 7, 11, 13, 17, 19, 23, 39, 31, 37, 41, 43, 47, 53 };
- unsigned int i;
-
- for(i = 0; i < sizeof prime / sizeof *prime; i++)
- {
- v_bignum_set_bignum(tmp, n);
- v_bignum_set_digit(m, prime[i]);
- v_bignum_mod(tmp, m);
- if(v_bignum_eq_zero(tmp))
- return 0;
- }
- return 1;
-}
-
-/* The Miller-Rabin primality test. Returns 1 if the candidate looks prime, 0 if
- * it IS NOT prime. Assumes that n is BITS / 2 bits, so that its square fits in BITS.
-*/
-static int miller_rabin(const VBigDig *n, VRandGen *gen)
-{
- int i, k;
- VBigDig VBIGNUM(a, BITS / 2), VBIGNUM(d, BITS), VBIGNUM(nmo, BITS / 2), VBIGNUM(x, BITS);
- const VBigDig *mu;
-
- mu = v_bignum_reduce_begin(n);
-
- /* Pick a "witness", a number in the [1, n) range. */
- v_bignum_set_random(a, gen);
- v_bignum_reduce(a, n, mu);
-
- v_bignum_set_one(d);
- v_bignum_set_bignum(nmo, n);
- v_bignum_sub_digit(nmo, 1); /* nmo = n - 1 (say it). */
- k = v_bignum_bit_msb(nmo);
- for(i = k; i >= 0; i--)
- {
- v_bignum_set_bignum(x, d);
- v_bignum_square_half(d);
- v_bignum_reduce(d, n, mu);
- if(v_bignum_eq_one(d) && !v_bignum_eq_one(x) && !v_bignum_eq(x, nmo))
- {
- v_bignum_reduce_end(mu);
- return 0; /* Composite found. */
- }
- if(v_bignum_bit_test(nmo, i))
- {
- v_bignum_mul(d, a);
- v_bignum_reduce(d, n, mu);
- }
- }
- v_bignum_reduce_end(mu);
- return v_bignum_eq_one(d); /* It might be prime. */
-}
-
-/* Test q for primality, returning 1 if it seems prime, 0 if it certainly IS not. */
-int v_prime_test(const VBigDig *q, VRandGen *gen)
-{
- int i;
-
- if(!quick_filter(q))
- return 0;
-
- for(i = 0; i < CYCLES; i++)
- {
- if(!miller_rabin(q, gen))
- return 0;
- }
- return 1;
-}
-
-void v_prime_set_random(VBigDig *x)
-{
- int bits = v_bignum_bit_size(x);
- VRandGen *gen;
-
- gen = v_randgen_new();
- do
- {
- /* Create candidate, making sure it's both odd and non-zero. */
- v_bignum_set_random(x, gen);
- /* Set topmost two bits, makes sure products are big. */
- v_bignum_bit_set(x, bits - 1);
- v_bignum_bit_set(x, bits - 2);
- /* Set lowermost bit, makes sure it is odd (better prime candidate that way). */
- v_bignum_bit_set(x, 0);
- } while(!v_prime_test(x, gen));
-/* printf("Prime found after %d iterations: ", count);
- v_bignum_print_hex_lf(x);
-*/
- v_randgen_destroy(gen);
-}
-
-/* Big (small?) primes from <http://www.utm.edu/research/primes/lists/small/small3.html#300>. */
-void v_prime_set_table(VBigDig *x, unsigned int i)
-{
- if(i == 0)
- v_bignum_set_string_hex(x, "0xCBC2C5536E3D6283FDAF36B1D0F91C3EAAB1D12892B961B866907930F6471851");
- else if(i == 1)
- v_bignum_set_string_hex(x, "0xC14F93E7A1543BD57C1DFBE98C29F9E4C13077FD27A0FEC05CCBC913CD213F19");
- else
- v_bignum_set_string(x, "65537"); /* It ain't big, but it's prime. */
-}
-
-#if PRIMEALONE
-#include <sys/time.h>
-
-#define REPS 300
-
-static double elapsed(const struct timeval *t1, const struct timeval *t2)
-{
- return t2->tv_sec - t1->tv_sec + 1E-6 * (t2->tv_usec - t1->tv_usec);
-}
-
-int main(void)
-{
- struct timeval now, then;
- VBigDig VBIGNUM(x, BITS / 2);
- int i;
-
- srand(clock());
-
-/* gettimeofday(&then, NULL);
- for(i = 0; i < REPS; i++)
- {
- v_prime_set_random_incr(x);
- }
- gettimeofday(&now, NULL);
- printf("incr: %g\n", elapsed(&then, &now));
-*/
- gettimeofday(&then, NULL);
- for(i = 0; i < REPS; i++)
- {
- v_prime_set_random(x);
- }
- gettimeofday(&now, NULL);
- printf("rand: %g\n", elapsed(&then, &now));
-
- return EXIT_SUCCESS;
-}
-
-#endif
diff --git a/extern/verse/dist/v_randgen.c b/extern/verse/dist/v_randgen.c
deleted file mode 100644
index c65b48be60b..00000000000
--- a/extern/verse/dist/v_randgen.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Random number generator module. Defines a simple API to allocate, use and
- * destroy a generator of randomness. Relies on platform-specific APIs.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_randgen.h"
-
-#if defined _WIN32
-
-/* This is a fall-back to the old style of simply using rand(). It should
- * be replaced by something using the proper Win32 cryptography APIs.
- * The CryptAcquireContext() and CryptGenRandom() calls sound interesting.
- *
- * FIXME: Replace ASAP.
-*/
-
-VRandGen * v_randgen_new(void)
-{
- return (VRandGen *) 1; /* Anything that isn't NULL. */
-}
-
-void v_randgen_get(VRandGen *gen, void *bytes, size_t num)
-{
- if(gen != NULL && bytes != NULL)
- {
- unsigned char *put = bytes, *get;
- size_t i;
- int x;
-
- while(num > 0)
- {
- x = rand();
- get = (unsigned char *) &x;
- for(i = 0; i < sizeof x && num > 0; i++, num--)
- *put++ = *get++;
- }
- }
-}
-
-void v_randgen_destroy(VRandGen *gen)
-{
- /* Nothing to do here. */
-}
-
-#else
-
-/* On non-Win32 platforms (which is Linux and Darwin, at the moment), we
- * read random data from a file, which is assumed to be one of the kernel's
- * virtual files.
-*/
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-struct VRandGen {
- int fd;
-};
-
-#define SOURCE "/dev/urandom" /* Name of file to read random bits from. */
-
-VRandGen * v_randgen_new(void)
-{
- VRandGen *gen;
-
- if((gen = malloc(sizeof *gen)) != NULL)
- {
- gen->fd = open(SOURCE, O_RDONLY);
- if(gen->fd < 0)
- {
- fprintf(stderr, __FILE__ ": Couldn't open " SOURCE " for reading\n");
- free(gen);
- gen = NULL;
- }
- }
- return gen;
-}
-
-void v_randgen_get(VRandGen *gen, void *bytes, size_t num)
-{
- if(gen != NULL && bytes != NULL)
- {
- if(read(gen->fd, bytes, num) != (int) num)
- fprintf(stderr, __FILE__ ": Failed to read %u bytes of random data from " SOURCE "\n", (unsigned int) num);
- }
-}
-
-void v_randgen_destroy(VRandGen *gen)
-{
- if(gen != NULL)
- {
- close(gen->fd);
- free(gen);
- }
-}
-
-#endif
diff --git a/extern/verse/dist/v_randgen.h b/extern/verse/dist/v_randgen.h
deleted file mode 100644
index ee14ce6c36f..00000000000
--- a/extern/verse/dist/v_randgen.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Random number generator API. A way to improve over rand().
-*/
-
-#if !defined V_RANDGEN_H
-#define V_RANDGEN_H
-
-typedef struct VRandGen VRandGen;
-
-extern VRandGen * v_randgen_new(void);
-extern void v_randgen_get(VRandGen *gen, void *bytes, size_t num);
-extern void v_randgen_destroy(VRandGen *gen);
-
-#endif /* V_RANDGEN_H */
diff --git a/extern/verse/dist/v_util.c b/extern/verse/dist/v_util.c
deleted file mode 100644
index a36f4c77791..00000000000
--- a/extern/verse/dist/v_util.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Utility functions.
-*/
-
-#include <stdio.h>
-
-#include "verse_header.h"
-#include "v_network.h"
-#include "v_util.h"
-
-/* Safe string copy. Copies from <src> to <dst>, not using more than <size>
- * bytes of destination space. Always 0-terminates the destination. Returns
- * the beginning of the destination string.
-*/
-char * v_strlcpy(char *dst, const char *src, size_t size)
-{
- char *base = dst;
-
- if(size == 0)
- return NULL;
- for(size--; size > 0 && *src != '\0'; size--)
- *dst++ = *src++;
- *dst = '\0';
-
- return base;
-}
-
-void v_timer_start(VUtilTimer *timer)
-{
- v_n_get_current_time(&timer->seconds, &timer->fractions);
-}
-
-void v_timer_advance(VUtilTimer *timer, double seconds)
-{
- if(timer == NULL)
- return;
- timer->seconds += (uint32) seconds;
- timer->fractions += (uint32) ((seconds - (int) seconds) * (double) 0xffffffff);
-}
-
-double v_timer_elapsed(const VUtilTimer *timer)
-{
- uint32 cur_seconds, cur_fractions;
-
- v_n_get_current_time(&cur_seconds, &cur_fractions);
- return (double)(cur_seconds - timer->seconds) + ((double)cur_fractions - (double)timer->fractions) / (double) 0xffffffff;
-}
-
-void v_timer_print(const VUtilTimer *timer)
-{
- uint32 cur_seconds, cur_fractions;
-
- v_n_get_current_time(&cur_seconds, &cur_fractions);
- printf("%f", (double)(cur_seconds - timer->seconds) + ((double)cur_fractions - (double)timer->fractions) / (double) 0xffffffff);
-}
-
-/* Compare |x| against built-in semi-magical constant, and return 1 if it's larger, 0 if not. */
-static int quat_valid(real64 x)
-{
- const real64 EPSILON = 0.0000001;
- return x > 0.0 ? x > EPSILON : x < -EPSILON;
-}
-
-int v_quat32_valid(const VNQuat32 *q)
-{
- if(q == NULL)
- return 0;
- return quat_valid(q->x) && quat_valid(q->y) && quat_valid(q->z) && quat_valid(q->w);
-}
-
-int v_quat64_valid(const VNQuat64 *q)
-{
- if(q == NULL)
- return 0;
- return quat_valid(q->x) && quat_valid(q->y) && quat_valid(q->z) && quat_valid(q->w);
-}
-
-VNQuat32 * v_quat32_from_quat64(VNQuat32 *dst, const VNQuat64 *src)
-{
- if(dst == NULL || src == NULL)
- return NULL;
- dst->x = (real32) src->x;
- dst->y = (real32) src->y;
- dst->z = (real32) src->z;
- dst->w = (real32) src->w;
- return dst;
-}
-
-VNQuat64 * v_quat64_from_quat32(VNQuat64 *dst, const VNQuat32 *src)
-{
- if(dst == NULL || src == NULL)
- return NULL;
- dst->x = src->x;
- dst->y = src->y;
- dst->z = src->z;
- dst->w = src->w;
- return dst;
-}
diff --git a/extern/verse/dist/v_util.h b/extern/verse/dist/v_util.h
deleted file mode 100644
index d252d958549..00000000000
--- a/extern/verse/dist/v_util.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Miscellaneous utility routines for generic use throughout the code.
-*/
-
-/* Safe, buffer size limited, string copy. */
-extern char * v_strlcpy(char *dst, const char *src, size_t size);
-
-typedef struct {
- uint32 seconds;
- uint32 fractions;
-} VUtilTimer;
-
-extern void v_timer_start(VUtilTimer *timer);
-extern void v_timer_advance(VUtilTimer *timer, double seconds);
-extern double v_timer_elapsed(const VUtilTimer *timer);
-extern void v_timer_print(const VUtilTimer *timer);
-
-extern int v_quat32_valid(const VNQuat32 *q);
-extern int v_quat64_valid(const VNQuat64 *q);
-extern VNQuat32*v_quat32_from_quat64(VNQuat32 *dst, const VNQuat64 *src);
-extern VNQuat64*v_quat64_from_quat32(VNQuat64 *dst, const VNQuat32 *src);
diff --git a/extern/verse/dist/verse.h b/extern/verse/dist/verse.h
deleted file mode 100644
index 53ce674725a..00000000000
--- a/extern/verse/dist/verse.h
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
-** Verse API Header file (for use with libverse.a).
-** This is automatically generated code; do not edit.
-*/
-
-
-#if !defined VERSE_H
-
-#if defined __cplusplus /* Declare as C symbols for C++ users. */
-extern "C" {
-#endif
-
-#define VERSE_H
-
-#if !defined VERSE_TYPES
-#define VERSE_TYPES
-
-#include <stdlib.h>
-
-/* Release information. */
-#define V_RELEASE_NUMBER 6
-#define V_RELEASE_PATCH 1
-#define V_RELEASE_LABEL ""
-
-typedef unsigned char boolean;
-typedef signed char int8;
-typedef unsigned char uint8;
-typedef short int16;
-typedef unsigned short uint16;
-typedef int int32;
-typedef unsigned int uint32;
-typedef float real32;
-typedef double real64;
-
-#define V_REAL64_MAX 1.7976931348623158e+308
-#define V_REAL32_MAX 3.402823466e+38f
-
-#if !defined TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-#define V_HOST_ID_SIZE (3 * (512 / 8)) /* The size of host IDs (keys), in 8-bit bytes. */
-
-typedef enum {
- V_NT_OBJECT = 0,
- V_NT_GEOMETRY,
- V_NT_MATERIAL,
- V_NT_BITMAP,
- V_NT_TEXT,
- V_NT_CURVE,
- V_NT_AUDIO,
- V_NT_NUM_TYPES,
- V_NT_SYSTEM = V_NT_NUM_TYPES,
- V_NT_NUM_TYPES_NETPACK
-} VNodeType;
-
-typedef uint32 VNodeID;
-typedef uint16 VLayerID; /* Commonly used to identify layers, nodes that have them. */
-typedef uint16 VBufferID; /* Commonly used to identify buffers, nodes that have them. */
-typedef uint16 VNMFragmentID;
-
-typedef void * VSession;
-
-#define V_MAX_NAME_LENGTH_SHORT 16
-#define V_MAX_NAME_LENGTH_LONG 48
-#define V_MAX_NAME_PASS_LENGTH 128
-
-typedef enum {
- VN_OWNER_OTHER = 0,
- VN_OWNER_MINE
-} VNodeOwner;
-
-typedef enum {
- VN_O_METHOD_PTYPE_INT8 = 0,
- VN_O_METHOD_PTYPE_INT16,
- VN_O_METHOD_PTYPE_INT32,
-
- VN_O_METHOD_PTYPE_UINT8,
- VN_O_METHOD_PTYPE_UINT16,
- VN_O_METHOD_PTYPE_UINT32,
-
- VN_O_METHOD_PTYPE_REAL32,
- VN_O_METHOD_PTYPE_REAL64,
-
- VN_O_METHOD_PTYPE_REAL32_VEC2,
- VN_O_METHOD_PTYPE_REAL32_VEC3,
- VN_O_METHOD_PTYPE_REAL32_VEC4,
-
- VN_O_METHOD_PTYPE_REAL64_VEC2,
- VN_O_METHOD_PTYPE_REAL64_VEC3,
- VN_O_METHOD_PTYPE_REAL64_VEC4,
-
- VN_O_METHOD_PTYPE_REAL32_MAT4,
- VN_O_METHOD_PTYPE_REAL32_MAT9,
- VN_O_METHOD_PTYPE_REAL32_MAT16,
-
- VN_O_METHOD_PTYPE_REAL64_MAT4,
- VN_O_METHOD_PTYPE_REAL64_MAT9,
- VN_O_METHOD_PTYPE_REAL64_MAT16,
-
- VN_O_METHOD_PTYPE_STRING,
-
- VN_O_METHOD_PTYPE_NODE,
- VN_O_METHOD_PTYPE_LAYER
-} VNOParamType;
-
-typedef union {
- int8 vint8;
- int16 vint16;
- int32 vint32;
- uint8 vuint8;
- uint16 vuint16;
- uint32 vuint32;
- real32 vreal32;
- real64 vreal64;
- real32 vreal32_vec[4];
- real32 vreal32_mat[16];
- real64 vreal64_vec[4];
- real64 vreal64_mat[16];
- char *vstring;
- VNodeID vnode;
- VLayerID vlayer;
-} VNOParam;
-
-#define VN_TAG_MAX_BLOB_SIZE 500
-
-typedef enum {
- VN_TAG_BOOLEAN = 0,
- VN_TAG_UINT32,
- VN_TAG_REAL64,
- VN_TAG_STRING,
- VN_TAG_REAL64_VEC3,
- VN_TAG_LINK,
- VN_TAG_ANIMATION,
- VN_TAG_BLOB,
- VN_TAG_TYPE_COUNT
-} VNTagType;
-
-typedef enum {
- VN_TAG_GROUP_SIZE = 16,
- VN_TAG_NAME_SIZE = 16,
- VN_TAG_FULL_NAME_SIZE = 64,
- VN_TAG_STRING_SIZE = 128
-} VNTagConstants;
-
-typedef union {
- boolean vboolean;
- uint32 vuint32;
- real64 vreal64;
- char *vstring;
- real64 vreal64_vec3[3];
- VNodeID vlink;
- struct {
- VNodeID curve;
- uint32 start;
- uint32 end;
- } vanimation;
- struct {
- uint16 size;
- void *blob;
- } vblob;
-} VNTag;
-
-typedef enum {
- VN_S_CONNECT_NAME_SIZE = 32,
- VN_S_CONNECT_KEY_SIZE = 4,
- VN_S_CONNECT_DATA_SIZE = 32,
- VS_S_CONNECT_HOSTID_PRIVATE_SIZE = 3 * 2048 / 8,
- VS_S_CONNECT_HOSTID_PUBLIC_SIZE = 2 * 2048 / 8
-} VNSConnectConstants;
-
-typedef enum {
- VN_FORMAT_REAL32,
- VN_FORMAT_REAL64
-} VNRealFormat;
-
-typedef struct {
- real32 x, y, z, w;
-} VNQuat32;
-
-typedef struct {
- real64 x, y, z, w;
-} VNQuat64;
-
-typedef enum {
- VN_O_METHOD_GROUP_NAME_SIZE = 16,
- VN_O_METHOD_NAME_SIZE = 16,
- VN_O_METHOD_SIG_SIZE = 256
-} VNOMethodConstants;
-
-typedef void VNOPackedParams; /* Opaque type. */
-
-typedef enum {
- VN_G_LAYER_VERTEX_XYZ = 0,
- VN_G_LAYER_VERTEX_UINT32,
- VN_G_LAYER_VERTEX_REAL,
- VN_G_LAYER_POLYGON_CORNER_UINT32 = 128,
- VN_G_LAYER_POLYGON_CORNER_REAL,
- VN_G_LAYER_POLYGON_FACE_UINT8,
- VN_G_LAYER_POLYGON_FACE_UINT32,
- VN_G_LAYER_POLYGON_FACE_REAL
-} VNGLayerType;
-
-typedef enum {
- VN_M_LIGHT_DIRECT = 0,
- VN_M_LIGHT_AMBIENT,
- VN_M_LIGHT_DIRECT_AND_AMBIENT,
- VN_M_LIGHT_BACK_DIRECT,
- VN_M_LIGHT_BACK_AMBIENT,
- VN_M_LIGHT_BACK_DIRECT_AND_AMBIENT
-} VNMLightType;
-
-typedef enum {
- VN_M_NOISE_PERLIN_ZERO_TO_ONE = 0,
- VN_M_NOISE_PERLIN_MINUS_ONE_TO_ONE,
- VN_M_NOISE_POINT_ZERO_TO_ONE,
- VN_M_NOISE_POINT_MINUS_ONE_TO_ONE
-} VNMNoiseType;
-
-typedef enum {
- VN_M_RAMP_SQUARE = 0,
- VN_M_RAMP_LINEAR,
- VN_M_RAMP_SMOOTH
-} VNMRampType;
-
-typedef enum {
- VN_M_RAMP_RED = 0,
- VN_M_RAMP_GREEN,
- VN_M_RAMP_BLUE
-} VNMRampChannel;
-
-typedef struct {
- real64 pos;
- real64 red;
- real64 green;
- real64 blue;
-} VNMRampPoint;
-
-typedef enum {
- VN_M_BLEND_FADE = 0,
- VN_M_BLEND_ADD,
- VN_M_BLEND_SUBTRACT,
- VN_M_BLEND_MULTIPLY,
- VN_M_BLEND_DIVIDE,
-} VNMBlendType;
-
-typedef enum {
- VN_M_FT_COLOR = 0,
- VN_M_FT_LIGHT,
- VN_M_FT_REFLECTION,
- VN_M_FT_TRANSPARENCY,
- VN_M_FT_VOLUME,
- VN_M_FT_VIEW,
- VN_M_FT_GEOMETRY,
- VN_M_FT_TEXTURE,
- VN_M_FT_NOISE,
- VN_M_FT_BLENDER,
- VN_M_FT_CLAMP,
- VN_M_FT_MATRIX,
- VN_M_FT_RAMP,
- VN_M_FT_ANIMATION,
- VN_M_FT_ALTERNATIVE,
- VN_M_FT_OUTPUT
-} VNMFragmentType;
-
-typedef union {
- struct {
- real64 red;
- real64 green;
- real64 blue;
- } color;
- struct {
- uint8 type;
- real64 normal_falloff;
- VNodeID brdf;
- char brdf_r[16];
- char brdf_g[16];
- char brdf_b[16];
- } light;
- struct {
- real64 normal_falloff;
- } reflection;
- struct {
- real64 normal_falloff;
- real64 refraction_index;
- } transparency;
- struct {
- real64 diffusion;
- real64 col_r;
- real64 col_g;
- real64 col_b;
- } volume;
- struct {
- char layer_r[16];
- char layer_g[16];
- char layer_b[16];
- } geometry;
- struct{
- VNodeID bitmap;
- char layer_r[16];
- char layer_g[16];
- char layer_b[16];
- boolean filtered;
- VNMFragmentID mapping;
- } texture;
- struct {
- uint8 type;
- VNMFragmentID mapping;
- } noise;
- struct {
- uint8 type;
- VNMFragmentID data_a;
- VNMFragmentID data_b;
- VNMFragmentID control;
- } blender;
- struct {
- boolean min;
- real64 red;
- real64 green;
- real64 blue;
- VNMFragmentID data;
- } clamp;
- struct {
- real64 matrix[16];
- VNMFragmentID data;
- } matrix;
- struct {
- uint8 type;
- uint8 channel;
- VNMFragmentID mapping;
- uint8 point_count;
- VNMRampPoint ramp[48];
- } ramp;
- struct {
- char label[16];
- } animation;
- struct {
- VNMFragmentID alt_a;
- VNMFragmentID alt_b;
- } alternative;
- struct {
- char label[16];
- VNMFragmentID front;
- VNMFragmentID back;
- } output;
-} VMatFrag;
-
-typedef enum {
- VN_B_LAYER_UINT1 = 0,
- VN_B_LAYER_UINT8,
- VN_B_LAYER_UINT16,
- VN_B_LAYER_REAL32,
- VN_B_LAYER_REAL64
-} VNBLayerType;
-
-#define VN_B_TILE_SIZE 8
-
-typedef union{
- uint8 vuint1[8];
- uint8 vuint8[64];
- uint16 vuint16[64];
- real32 vreal32[64];
- real64 vreal64[64];
-} VNBTile;
-
-typedef enum {
- VN_T_CONTENT_LANGUAGE_SIZE = 32,
- VN_T_CONTENT_INFO_SIZE = 256,
- VN_T_BUFFER_NAME_SIZE = 16,
- VN_T_MAX_TEXT_CMD_SIZE = 1450
-} VNTConstants;
-
-/* This is how many *samples* are included in a block of the given type. Not bytes. */
-typedef enum {
- VN_A_BLOCK_SIZE_INT8 = 1024,
- VN_A_BLOCK_SIZE_INT16 = 512,
- VN_A_BLOCK_SIZE_INT24 = 384,
- VN_A_BLOCK_SIZE_INT32 = 256,
- VN_A_BLOCK_SIZE_REAL32 = 256,
- VN_A_BLOCK_SIZE_REAL64 = 128
-} VNAConstants;
-
-typedef enum {
- VN_A_BLOCK_INT8,
- VN_A_BLOCK_INT16,
- VN_A_BLOCK_INT24,
- VN_A_BLOCK_INT32,
- VN_A_BLOCK_REAL32,
- VN_A_BLOCK_REAL64
-} VNABlockType;
-
-/* Audio commands take pointers to blocks of these. They are not packed as unions. */
-typedef union {
- int8 vint8[VN_A_BLOCK_SIZE_INT8];
- int16 vint16[VN_A_BLOCK_SIZE_INT16];
- int32 vint24[VN_A_BLOCK_SIZE_INT24];
- int32 vint32[VN_A_BLOCK_SIZE_INT32];
- real32 vreal32[VN_A_BLOCK_SIZE_REAL32];
- real64 vreal64[VN_A_BLOCK_SIZE_REAL64];
-} VNABlock;
-
-extern void verse_set_port(uint16 port);
-extern void verse_host_id_create(uint8 *id);
-extern void verse_host_id_set(uint8 *id);
-extern void verse_callback_set(void *send_func, void *callback, void *user_data);
-extern void verse_callback_update(uint32 microseconds);
-extern void verse_session_set(VSession session);
-extern VSession verse_session_get(void);
-extern void verse_session_destroy(VSession session);
-extern size_t verse_session_get_size(void);
-extern VNodeID verse_session_get_avatar(void);
-extern void verse_session_get_time(uint32 *seconds, uint32 *fractions);
-
-extern VNOPackedParams * verse_method_call_pack(uint32 param_count, const VNOParamType *param_type, const VNOParam *params);
-extern boolean verse_method_call_unpack(const VNOPackedParams *data, uint32 param_count, const VNOParamType *param_type, VNOParam *params);
-
-/*
-#define V_PRINT_SEND_COMMANDS
-#define V_PRINT_RECEIVE_COMMANDS
-*/
-
-#endif /* VERSE_TYPES */
-
-/* Command sending functions begin. ----------------------------------------- */
-
-extern VSession verse_send_connect(const char *name, const char *pass, const char *address, const uint8 *expected_host_id);
-extern VSession verse_send_connect_accept(VNodeID avatar, const char *address, uint8 *host_id);
-extern void verse_send_connect_terminate(const char *address, const char *bye);
-extern void verse_send_ping(const char *address, const char *message);
-extern void verse_send_node_index_subscribe(uint32 mask);
-extern void verse_send_node_create(VNodeID node_id, VNodeType type, VNodeOwner owner);
-extern void verse_send_node_destroy(VNodeID node_id);
-extern void verse_send_node_subscribe(VNodeID node_id);
-extern void verse_send_node_unsubscribe(VNodeID node_id);
-extern void verse_send_tag_group_create(VNodeID node_id, uint16 group_id, const char *name);
-extern void verse_send_tag_group_destroy(VNodeID node_id, uint16 group_id);
-extern void verse_send_tag_group_subscribe(VNodeID node_id, uint16 group_id);
-extern void verse_send_tag_group_unsubscribe(VNodeID node_id, uint16 group_id);
-extern void verse_send_tag_create(VNodeID node_id, uint16 group_id, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag);
-extern void verse_send_tag_destroy(VNodeID node_id, uint16 group_id, uint16 tag_id);
-extern void verse_send_node_name_set(VNodeID node_id, const char *name);
-
-extern void verse_send_o_transform_pos_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const real32 *pos, const real32 *speed, const real32 *accelerate, const real32 *drag_normal, real32 drag);
-extern void verse_send_o_transform_rot_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *rot, const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag);
-extern void verse_send_o_transform_scale_real32(VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z);
-extern void verse_send_o_transform_pos_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const real64 *pos, const real64 *speed, const real64 *accelerate, const real64 *drag_normal, real64 drag);
-extern void verse_send_o_transform_rot_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat64 *rot, const VNQuat64 *speed, const VNQuat64 *accelerate, const VNQuat64 *drag_normal, real64 drag);
-extern void verse_send_o_transform_scale_real64(VNodeID node_id, real64 scale_x, real64 scale_y, real64 scale_z);
-extern void verse_send_o_transform_subscribe(VNodeID node_id, VNRealFormat type);
-extern void verse_send_o_transform_unsubscribe(VNodeID node_id, VNRealFormat type);
-extern void verse_send_o_light_set(VNodeID node_id, real64 light_r, real64 light_g, real64 light_b);
-extern void verse_send_o_link_set(VNodeID node_id, uint16 link_id, VNodeID link, const char *label, uint32 target_id);
-extern void verse_send_o_link_destroy(VNodeID node_id, uint16 link_id);
-extern void verse_send_o_method_group_create(VNodeID node_id, uint16 group_id, const char *name);
-extern void verse_send_o_method_group_destroy(VNodeID node_id, uint16 group_id);
-extern void verse_send_o_method_group_subscribe(VNodeID node_id, uint16 group_id);
-extern void verse_send_o_method_group_unsubscribe(VNodeID node_id, uint16 group_id);
-extern void verse_send_o_method_create(VNodeID node_id, uint16 group_id, uint16 method_id, const char *name, uint8 param_count, const VNOParamType *param_types, const char * *param_names);
-extern void verse_send_o_method_destroy(VNodeID node_id, uint16 group_id, uint16 method_id);
-extern void verse_send_o_method_call(VNodeID node_id, uint16 group_id, uint16 method_id, VNodeID sender, const VNOPackedParams *params);
-extern void verse_send_o_anim_run(VNodeID node_id, uint16 link_id, uint32 time_s, uint32 time_f, uint8 dimensions, const real64 *pos, const real64 *speed, const real64 *accel, const real64 *scale, const real64 *scale_speed);
-extern void verse_send_o_hide(VNodeID node_id, uint8 hidden);
-
-extern void verse_send_g_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_uint, real64 def_real);
-extern void verse_send_g_layer_destroy(VNodeID node_id, VLayerID layer_id);
-extern void verse_send_g_layer_subscribe(VNodeID node_id, VLayerID layer_id, VNRealFormat type);
-extern void verse_send_g_layer_unsubscribe(VNodeID node_id, VLayerID layer_id);
-extern void verse_send_g_vertex_set_xyz_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 x, real32 y, real32 z);
-extern void verse_send_g_vertex_delete_real32(VNodeID node_id, uint32 vertex_id);
-extern void verse_send_g_vertex_set_xyz_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 x, real64 y, real64 z);
-extern void verse_send_g_vertex_delete_real64(VNodeID node_id, uint32 vertex_id);
-extern void verse_send_g_vertex_set_uint32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, uint32 value);
-extern void verse_send_g_vertex_set_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 value);
-extern void verse_send_g_vertex_set_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 value);
-extern void verse_send_g_polygon_set_corner_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-extern void verse_send_g_polygon_delete(VNodeID node_id, uint32 polygon_id);
-extern void verse_send_g_polygon_set_corner_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 v0, real64 v1, real64 v2, real64 v3);
-extern void verse_send_g_polygon_set_corner_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 v0, real32 v1, real32 v2, real32 v3);
-extern void verse_send_g_polygon_set_face_uint8(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint8 value);
-extern void verse_send_g_polygon_set_face_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 value);
-extern void verse_send_g_polygon_set_face_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 value);
-extern void verse_send_g_polygon_set_face_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 value);
-extern void verse_send_g_crease_set_vertex(VNodeID node_id, const char *layer, uint32 def_crease);
-extern void verse_send_g_crease_set_edge(VNodeID node_id, const char *layer, uint32 def_crease);
-extern void verse_send_g_bone_create(VNodeID node_id, uint16 bone_id, const char *weight, const char *reference, uint16 parent, real64 pos_x, real64 pos_y, real64 pos_z, const char *position_label, const char *rotation_label, const char *scale_label);
-extern void verse_send_g_bone_destroy(VNodeID node_id, uint16 bone_id);
-
-extern void verse_send_m_fragment_create(VNodeID node_id, VNMFragmentID frag_id, VNMFragmentType type, const VMatFrag *fragment);
-extern void verse_send_m_fragment_destroy(VNodeID node_id, VNMFragmentID frag_id);
-
-extern void verse_send_b_dimensions_set(VNodeID node_id, uint16 width, uint16 height, uint16 depth);
-extern void verse_send_b_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNBLayerType type);
-extern void verse_send_b_layer_destroy(VNodeID node_id, VLayerID layer_id);
-extern void verse_send_b_layer_subscribe(VNodeID node_id, VLayerID layer_id, uint8 level);
-extern void verse_send_b_layer_unsubscribe(VNodeID node_id, VLayerID layer_id);
-extern void verse_send_b_tile_set(VNodeID node_id, VLayerID layer_id, uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile);
-
-extern void verse_send_t_language_set(VNodeID node_id, const char *language);
-extern void verse_send_t_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name);
-extern void verse_send_t_buffer_destroy(VNodeID node_id, VBufferID buffer_id);
-extern void verse_send_t_buffer_subscribe(VNodeID node_id, VBufferID buffer_id);
-extern void verse_send_t_buffer_unsubscribe(VNodeID node_id, VBufferID buffer_id);
-extern void verse_send_t_text_set(VNodeID node_id, VBufferID buffer_id, uint32 pos, uint32 length, const char *text);
-
-extern void verse_send_c_curve_create(VNodeID node_id, VLayerID curve_id, const char *name, uint8 dimensions);
-extern void verse_send_c_curve_destroy(VNodeID node_id, VLayerID curve_id);
-extern void verse_send_c_curve_subscribe(VNodeID node_id, VLayerID curve_id);
-extern void verse_send_c_curve_unsubscribe(VNodeID node_id, VLayerID curve_id);
-extern void verse_send_c_key_set(VNodeID node_id, VLayerID curve_id, uint32 key_id, uint8 dimensions, const real64 *pre_value, const uint32 *pre_pos, const real64 *value, real64 pos, const real64 *post_value, const uint32 *post_pos);
-extern void verse_send_c_key_destroy(VNodeID node_id, VLayerID curve_id, uint32 key_id);
-
-extern void verse_send_a_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name, VNABlockType type, real64 frequency);
-extern void verse_send_a_buffer_destroy(VNodeID node_id, VBufferID buffer_id);
-extern void verse_send_a_buffer_subscribe(VNodeID node_id, VBufferID layer_id);
-extern void verse_send_a_buffer_unsubscribe(VNodeID node_id, VBufferID layer_id);
-extern void verse_send_a_block_set(VNodeID node_id, VLayerID buffer_id, uint32 block_index, VNABlockType type, const VNABlock *samples);
-extern void verse_send_a_block_clear(VNodeID node_id, VLayerID buffer_id, uint32 block_index);
-extern void verse_send_a_stream_create(VNodeID node_id, VLayerID stream_id, const char *name);
-extern void verse_send_a_stream_destroy(VNodeID node_id, VLayerID stream_id);
-extern void verse_send_a_stream_subscribe(VNodeID node_id, VLayerID stream_id);
-extern void verse_send_a_stream_unsubscribe(VNodeID node_id, VLayerID stream_id);
-extern void verse_send_a_stream(VNodeID node_id, VLayerID stream_id, uint32 time_s, uint32 time_f, VNABlockType type, real64 frequency, const VNABlock *samples);
-
-
-#if defined __cplusplus
-}
-#endif
-
-#endif /* VERSE_H */
diff --git a/extern/verse/dist/verse_header.h b/extern/verse/dist/verse_header.h
deleted file mode 100644
index 3f3403265fd..00000000000
--- a/extern/verse/dist/verse_header.h
+++ /dev/null
@@ -1,409 +0,0 @@
-#if !defined VERSE_TYPES
-#define VERSE_TYPES
-
-#include <stdlib.h>
-
-/* Release information. */
-#define V_RELEASE_NUMBER 6
-#define V_RELEASE_PATCH 1
-#define V_RELEASE_LABEL ""
-
-typedef unsigned char boolean;
-typedef signed char int8;
-typedef unsigned char uint8;
-typedef short int16;
-typedef unsigned short uint16;
-typedef int int32;
-typedef unsigned int uint32;
-typedef float real32;
-typedef double real64;
-
-#define V_REAL64_MAX 1.7976931348623158e+308
-#define V_REAL32_MAX 3.402823466e+38f
-
-#if !defined TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-#define V_HOST_ID_SIZE (3 * (512 / 8)) /* The size of host IDs (keys), in 8-bit bytes. */
-
-typedef enum {
- V_NT_OBJECT = 0,
- V_NT_GEOMETRY,
- V_NT_MATERIAL,
- V_NT_BITMAP,
- V_NT_TEXT,
- V_NT_CURVE,
- V_NT_AUDIO,
- V_NT_NUM_TYPES,
- V_NT_SYSTEM = V_NT_NUM_TYPES,
- V_NT_NUM_TYPES_NETPACK
-} VNodeType;
-
-typedef uint32 VNodeID;
-typedef uint16 VLayerID; /* Commonly used to identify layers, nodes that have them. */
-typedef uint16 VBufferID; /* Commonly used to identify buffers, nodes that have them. */
-typedef uint16 VNMFragmentID;
-
-typedef void * VSession;
-
-#define V_MAX_NAME_LENGTH_SHORT 16
-#define V_MAX_NAME_LENGTH_LONG 48
-#define V_MAX_NAME_PASS_LENGTH 128
-
-typedef enum {
- VN_OWNER_OTHER = 0,
- VN_OWNER_MINE
-} VNodeOwner;
-
-typedef enum {
- VN_O_METHOD_PTYPE_INT8 = 0,
- VN_O_METHOD_PTYPE_INT16,
- VN_O_METHOD_PTYPE_INT32,
-
- VN_O_METHOD_PTYPE_UINT8,
- VN_O_METHOD_PTYPE_UINT16,
- VN_O_METHOD_PTYPE_UINT32,
-
- VN_O_METHOD_PTYPE_REAL32,
- VN_O_METHOD_PTYPE_REAL64,
-
- VN_O_METHOD_PTYPE_REAL32_VEC2,
- VN_O_METHOD_PTYPE_REAL32_VEC3,
- VN_O_METHOD_PTYPE_REAL32_VEC4,
-
- VN_O_METHOD_PTYPE_REAL64_VEC2,
- VN_O_METHOD_PTYPE_REAL64_VEC3,
- VN_O_METHOD_PTYPE_REAL64_VEC4,
-
- VN_O_METHOD_PTYPE_REAL32_MAT4,
- VN_O_METHOD_PTYPE_REAL32_MAT9,
- VN_O_METHOD_PTYPE_REAL32_MAT16,
-
- VN_O_METHOD_PTYPE_REAL64_MAT4,
- VN_O_METHOD_PTYPE_REAL64_MAT9,
- VN_O_METHOD_PTYPE_REAL64_MAT16,
-
- VN_O_METHOD_PTYPE_STRING,
-
- VN_O_METHOD_PTYPE_NODE,
- VN_O_METHOD_PTYPE_LAYER
-} VNOParamType;
-
-typedef union {
- int8 vint8;
- int16 vint16;
- int32 vint32;
- uint8 vuint8;
- uint16 vuint16;
- uint32 vuint32;
- real32 vreal32;
- real64 vreal64;
- real32 vreal32_vec[4];
- real32 vreal32_mat[16];
- real64 vreal64_vec[4];
- real64 vreal64_mat[16];
- char *vstring;
- VNodeID vnode;
- VLayerID vlayer;
-} VNOParam;
-
-#define VN_TAG_MAX_BLOB_SIZE 500
-
-typedef enum {
- VN_TAG_BOOLEAN = 0,
- VN_TAG_UINT32,
- VN_TAG_REAL64,
- VN_TAG_STRING,
- VN_TAG_REAL64_VEC3,
- VN_TAG_LINK,
- VN_TAG_ANIMATION,
- VN_TAG_BLOB,
- VN_TAG_TYPE_COUNT
-} VNTagType;
-
-typedef enum {
- VN_TAG_GROUP_SIZE = 16,
- VN_TAG_NAME_SIZE = 16,
- VN_TAG_FULL_NAME_SIZE = 64,
- VN_TAG_STRING_SIZE = 128
-} VNTagConstants;
-
-typedef union {
- boolean vboolean;
- uint32 vuint32;
- real64 vreal64;
- char *vstring;
- real64 vreal64_vec3[3];
- VNodeID vlink;
- struct {
- VNodeID curve;
- uint32 start;
- uint32 end;
- } vanimation;
- struct {
- uint16 size;
- void *blob;
- } vblob;
-} VNTag;
-
-typedef enum {
- VN_S_CONNECT_NAME_SIZE = 32,
- VN_S_CONNECT_KEY_SIZE = 4,
- VN_S_CONNECT_DATA_SIZE = 32,
- VS_S_CONNECT_HOSTID_PRIVATE_SIZE = 3 * 2048 / 8,
- VS_S_CONNECT_HOSTID_PUBLIC_SIZE = 2 * 2048 / 8
-} VNSConnectConstants;
-
-typedef enum {
- VN_FORMAT_REAL32,
- VN_FORMAT_REAL64
-} VNRealFormat;
-
-typedef struct {
- real32 x, y, z, w;
-} VNQuat32;
-
-typedef struct {
- real64 x, y, z, w;
-} VNQuat64;
-
-typedef enum {
- VN_O_METHOD_GROUP_NAME_SIZE = 16,
- VN_O_METHOD_NAME_SIZE = 16,
- VN_O_METHOD_SIG_SIZE = 256
-} VNOMethodConstants;
-
-typedef void VNOPackedParams; /* Opaque type. */
-
-typedef enum {
- VN_G_LAYER_VERTEX_XYZ = 0,
- VN_G_LAYER_VERTEX_UINT32,
- VN_G_LAYER_VERTEX_REAL,
- VN_G_LAYER_POLYGON_CORNER_UINT32 = 128,
- VN_G_LAYER_POLYGON_CORNER_REAL,
- VN_G_LAYER_POLYGON_FACE_UINT8,
- VN_G_LAYER_POLYGON_FACE_UINT32,
- VN_G_LAYER_POLYGON_FACE_REAL
-} VNGLayerType;
-
-typedef enum {
- VN_M_LIGHT_DIRECT = 0,
- VN_M_LIGHT_AMBIENT,
- VN_M_LIGHT_DIRECT_AND_AMBIENT,
- VN_M_LIGHT_BACK_DIRECT,
- VN_M_LIGHT_BACK_AMBIENT,
- VN_M_LIGHT_BACK_DIRECT_AND_AMBIENT
-} VNMLightType;
-
-typedef enum {
- VN_M_NOISE_PERLIN_ZERO_TO_ONE = 0,
- VN_M_NOISE_PERLIN_MINUS_ONE_TO_ONE,
- VN_M_NOISE_POINT_ZERO_TO_ONE,
- VN_M_NOISE_POINT_MINUS_ONE_TO_ONE
-} VNMNoiseType;
-
-typedef enum {
- VN_M_RAMP_SQUARE = 0,
- VN_M_RAMP_LINEAR,
- VN_M_RAMP_SMOOTH
-} VNMRampType;
-
-typedef enum {
- VN_M_RAMP_RED = 0,
- VN_M_RAMP_GREEN,
- VN_M_RAMP_BLUE
-} VNMRampChannel;
-
-typedef struct {
- real64 pos;
- real64 red;
- real64 green;
- real64 blue;
-} VNMRampPoint;
-
-typedef enum {
- VN_M_BLEND_FADE = 0,
- VN_M_BLEND_ADD,
- VN_M_BLEND_SUBTRACT,
- VN_M_BLEND_MULTIPLY,
- VN_M_BLEND_DIVIDE,
-} VNMBlendType;
-
-typedef enum {
- VN_M_FT_COLOR = 0,
- VN_M_FT_LIGHT,
- VN_M_FT_REFLECTION,
- VN_M_FT_TRANSPARENCY,
- VN_M_FT_VOLUME,
- VN_M_FT_VIEW,
- VN_M_FT_GEOMETRY,
- VN_M_FT_TEXTURE,
- VN_M_FT_NOISE,
- VN_M_FT_BLENDER,
- VN_M_FT_CLAMP,
- VN_M_FT_MATRIX,
- VN_M_FT_RAMP,
- VN_M_FT_ANIMATION,
- VN_M_FT_ALTERNATIVE,
- VN_M_FT_OUTPUT
-} VNMFragmentType;
-
-typedef union {
- struct {
- real64 red;
- real64 green;
- real64 blue;
- } color;
- struct {
- uint8 type;
- real64 normal_falloff;
- VNodeID brdf;
- char brdf_r[16];
- char brdf_g[16];
- char brdf_b[16];
- } light;
- struct {
- real64 normal_falloff;
- } reflection;
- struct {
- real64 normal_falloff;
- real64 refraction_index;
- } transparency;
- struct {
- real64 diffusion;
- real64 col_r;
- real64 col_g;
- real64 col_b;
- } volume;
- struct {
- char layer_r[16];
- char layer_g[16];
- char layer_b[16];
- } geometry;
- struct{
- VNodeID bitmap;
- char layer_r[16];
- char layer_g[16];
- char layer_b[16];
- boolean filtered;
- VNMFragmentID mapping;
- } texture;
- struct {
- uint8 type;
- VNMFragmentID mapping;
- } noise;
- struct {
- uint8 type;
- VNMFragmentID data_a;
- VNMFragmentID data_b;
- VNMFragmentID control;
- } blender;
- struct {
- boolean min;
- real64 red;
- real64 green;
- real64 blue;
- VNMFragmentID data;
- } clamp;
- struct {
- real64 matrix[16];
- VNMFragmentID data;
- } matrix;
- struct {
- uint8 type;
- uint8 channel;
- VNMFragmentID mapping;
- uint8 point_count;
- VNMRampPoint ramp[48];
- } ramp;
- struct {
- char label[16];
- } animation;
- struct {
- VNMFragmentID alt_a;
- VNMFragmentID alt_b;
- } alternative;
- struct {
- char label[16];
- VNMFragmentID front;
- VNMFragmentID back;
- } output;
-} VMatFrag;
-
-typedef enum {
- VN_B_LAYER_UINT1 = 0,
- VN_B_LAYER_UINT8,
- VN_B_LAYER_UINT16,
- VN_B_LAYER_REAL32,
- VN_B_LAYER_REAL64
-} VNBLayerType;
-
-#define VN_B_TILE_SIZE 8
-
-typedef union{
- uint8 vuint1[8];
- uint8 vuint8[64];
- uint16 vuint16[64];
- real32 vreal32[64];
- real64 vreal64[64];
-} VNBTile;
-
-typedef enum {
- VN_T_CONTENT_LANGUAGE_SIZE = 32,
- VN_T_CONTENT_INFO_SIZE = 256,
- VN_T_BUFFER_NAME_SIZE = 16,
- VN_T_MAX_TEXT_CMD_SIZE = 1450
-} VNTConstants;
-
-/* This is how many *samples* are included in a block of the given type. Not bytes. */
-typedef enum {
- VN_A_BLOCK_SIZE_INT8 = 1024,
- VN_A_BLOCK_SIZE_INT16 = 512,
- VN_A_BLOCK_SIZE_INT24 = 384,
- VN_A_BLOCK_SIZE_INT32 = 256,
- VN_A_BLOCK_SIZE_REAL32 = 256,
- VN_A_BLOCK_SIZE_REAL64 = 128
-} VNAConstants;
-
-typedef enum {
- VN_A_BLOCK_INT8,
- VN_A_BLOCK_INT16,
- VN_A_BLOCK_INT24,
- VN_A_BLOCK_INT32,
- VN_A_BLOCK_REAL32,
- VN_A_BLOCK_REAL64
-} VNABlockType;
-
-/* Audio commands take pointers to blocks of these. They are not packed as unions. */
-typedef union {
- int8 vint8[VN_A_BLOCK_SIZE_INT8];
- int16 vint16[VN_A_BLOCK_SIZE_INT16];
- int32 vint24[VN_A_BLOCK_SIZE_INT24];
- int32 vint32[VN_A_BLOCK_SIZE_INT32];
- real32 vreal32[VN_A_BLOCK_SIZE_REAL32];
- real64 vreal64[VN_A_BLOCK_SIZE_REAL64];
-} VNABlock;
-
-extern void verse_set_port(uint16 port);
-extern void verse_host_id_create(uint8 *id);
-extern void verse_host_id_set(uint8 *id);
-extern void verse_callback_set(void *send_func, void *callback, void *user_data);
-extern void verse_callback_update(uint32 microseconds);
-extern void verse_session_set(VSession session);
-extern VSession verse_session_get(void);
-extern void verse_session_destroy(VSession session);
-extern size_t verse_session_get_size(void);
-extern VNodeID verse_session_get_avatar(void);
-extern void verse_session_get_time(uint32 *seconds, uint32 *fractions);
-
-extern VNOPackedParams * verse_method_call_pack(uint32 param_count, const VNOParamType *param_type, const VNOParam *params);
-extern boolean verse_method_call_unpack(const VNOPackedParams *data, uint32 param_count, const VNOParamType *param_type, VNOParam *params);
-
-/*
-#define V_PRINT_SEND_COMMANDS
-#define V_PRINT_RECEIVE_COMMANDS
-*/
-
-#endif /* VERSE_TYPES */
diff --git a/extern/verse/dist/verse_ms.c b/extern/verse/dist/verse_ms.c
deleted file mode 100644
index 84f3fdb837b..00000000000
--- a/extern/verse/dist/verse_ms.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * A helper library to send and parse master server pings. See the relevant
- * header for details.
- *
- * This code was written in 2006 by Emil Brink. It is released as public domain.
-*/
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "verse.h"
-#include "verse_ms.h"
-
-/* Build and send a MS:GET packet. */
-void verse_ms_get_send(const char *address, int fields, const char *tags)
-{
- char req[128];
-
- strcpy(req, "MS:GET IP=");
- if(fields & VERSE_MS_FIELD_DESCRIPTION)
- strcat(req, "DE");
- if(tags != NULL)
- {
- strcat(req, " TA=");
- strcat(req, tags);
- }
- verse_send_ping(address, req);
-}
-
-/* Skip assign, i.e. "NAME=" string, at <msg>. Stores name into <put>, and then updates
- * it. Returns NULL on parse error, in which case the <put> pointer is not advanced.
-*/
-static const char * skip_assign(char **put, const char *msg)
-{
- if(isalpha(*msg))
- {
- char *p = put != NULL ? *put : NULL;
-
- if(p != NULL)
- *p++ = *msg;
- msg++;
- while(*msg && (isalnum(*msg) || *msg == '_'))
- {
- if(p != NULL)
- *p++ = *msg;
- msg++;
- }
- if(*msg == '=')
- {
- if(p != NULL)
- *p++ = '\0';
- if(put != NULL)
- *put = p;
- return msg + 1;
- }
- }
- return NULL;
-}
-
-/** Skip value at <msg>, optionally storing de-quoted version through <put>,
- * which is advanced. Returns NULL on parse error, without updating <put>.
-*/
-static const char * skip_value(char **put, const char *msg)
-{
- char *p = (put != NULL) ? *put : NULL;
-
- if(*msg == '"')
- {
- msg++;
- while(*msg != '\0' && *msg != '"')
- {
- if(*msg == '\\')
- {
- if(msg[1] != '\0')
- msg++;
- else
- return NULL;
- }
- if(p != NULL)
- *p++ = *msg;
- msg++;
- }
- if(*msg == '"')
- {
- if(p != NULL)
- *p++ = '\0';
- if(put != NULL)
- *put = p;
- msg++;
- if(*msg == '\0' || isspace(*msg))
- return msg;
- }
- return NULL;
- }
- while(*msg && !isspace(*msg))
- {
- if(*msg == '"')
- return NULL;
- if(p != NULL)
- *p++ = *msg;
- msg++;
- }
- if(p != NULL)
- *p++ = '\0';
- if(put != NULL)
- *put = p;
- return msg;
-}
-
-static const char * put_field(VMSField *field, char **put, const char *src)
-{
- const char *ptr;
- char *base = *put;
-
- if((ptr = skip_assign(put, src)) != NULL && ptr - src > 1)
- {
- field->name = base;
- src = ptr;
- base = *put;
- if((ptr = skip_value(put, src)) != NULL)
- {
- field->value = base;
- return ptr;
- }
- }
- return NULL;
-}
-
-static int cmp_fields(const void *a, const void *b)
-{
- return strcmp(((const VMSField *) a)->name, ((const VMSField *) b)->name);
-}
-
-VMSServer ** verse_ms_list_parse(const char *msg)
-{
- const char *word[384]; /* Takes quite a lot of stack space. */
- const char *ptr;
- char *put;
- size_t num_word = 0, i, j, num_ip = 0, num_field, space = 0;
- VMSServer **desc, *next;
- VMSField *field;
-
- if(strncmp(msg, "MS:LIST", 7) == 0)
- msg += 7;
- if(*msg != ' ')
- return NULL;
-
- /* Step one: split the string into words, at whitespace. Split is aware
- * of quoting rules for value assignment, this is crucial. This split is
- * non-invasive, meaning each "word" will be a suffix.
- */
- while(*msg)
- {
- while(isspace(*msg))
- msg++;
- ptr = skip_assign(NULL, msg);
- if(ptr != NULL)
- {
- space += ptr - msg;
- word[num_word++] = msg;
- msg = ptr;
- ptr = skip_value(NULL, msg);
- if(ptr == NULL)
- {
- fprintf(stderr, "Parse error\n");
- return NULL;
- }
- space += ptr - msg + 1;
- msg = ptr;
- }
- else if(*msg != '\0')
- {
- fprintf(stderr, "Parse error\n");
- return NULL;
- }
- }
- /* Now, count how many words begin with "IP=". */
- for(i = 0; i < num_word; i++)
- {
- if(strncmp(word[i], "IP=", 3) == 0)
- num_ip++;
- }
-/* printf("found %u IPs, %u bytes\n", num_ip, space);
- printf("%u IP and %u words -> %u fields total\n", num_ip, num_word, num_word - num_ip);
-*/ num_field = num_word - num_ip;
- /* Allocate the descriptions. */
-/* printf("allocating %u bytes\n", (num_ip + 1) * (sizeof *desc) + num_ip * sizeof **desc + num_field * sizeof (VMSField) + space);
- printf(" %u for pointers, %u for structs, %u for fields, %u string\n",
- (num_ip + 1) * (sizeof *desc), num_ip * sizeof **desc, num_field * sizeof (VMSField), space);
-*/ desc = malloc((num_ip + 1) * (sizeof *desc) + num_ip * sizeof **desc + num_field * sizeof (VMSField) + space);
- next = (VMSServer *) (desc + (num_ip + 1));
-/* printf("desc store at %u\n", (char *) next - (char *) desc);*/
- field = (VMSField *) (next + num_ip);
-/* printf("field store at %u\n", (char *) field - (char *) desc);*/
- put = (char *) (field + num_field);
-/* printf("string store at %u\n", put - (char *) desc);*/
- for(i = j = 0; i < num_word;)
- {
- if(strncmp(word[i], "IP=", 3) == 0)
- {
- desc[j] = next;
- next->ip = put;
- ptr = skip_value(&put, word[i] + 3);
- next->num_fields = 0;
- next->field = field;
- for(i++; i < num_word && strncmp(word[i], "IP=", 3) != 0; i++, next->num_fields++, field++)
- put_field(&next->field[next->num_fields], &put, word[i]);
- if(next->num_fields > 0) /* Sort the fields, for binary search later. */
- qsort(next->field, next->num_fields, sizeof *next->field, cmp_fields);
- j++;
- next++;
- }
- else
- i++;
- }
- desc[j] = NULL;
- return desc;
-}
-
-/* A binary search, exploiting that the fields are sorted. */
-static const VMSField * field_find(const VMSServer *ms, const char *name)
-{
- int lo, hi, mid, rel;
-
- if(ms == NULL || name == NULL)
- return NULL;
- lo = 0;
- hi = ms->num_fields;
- while(lo <= hi)
- {
- mid = (lo + hi) / 2;
- rel = strcmp(name, ms->field[mid].name);
- if(rel == 0)
- return &ms->field[mid];
- if(rel < 0)
- hi = mid - 1;
- else
- lo = mid + 1;
- }
- return NULL;
-}
-
-int verse_ms_field_exists(const VMSServer *ms, const char *name)
-{
- if(ms == NULL || name == NULL)
- return 0;
- return field_find(ms, name) != NULL;
-}
-
-const char * verse_ms_field_value(const VMSServer *ms, const char *name)
-{
- const VMSField *f;
-
- if((f = field_find(ms, name)) != NULL)
- return f->value;
- return NULL;
-}
-
-#if defined VERSE_MS_STANDALONE
-
-int main(void)
-{
- VMSServer **servers = verse_ms_list_parse("MS:LIST IP=127.0.0.1:4951 DE=\"A test server, mainly for Eskil\" COOL=yes BACKUP=daily LANG=sv_SE "
- "IP=130.237.221.74 DE=\"Test server on a puny laptop\" COOL=yes DORKY=no OPEN=absolutely "
- "IP=127.0.0.1:5151 DE=\"This is a back slash: '\\\\', cool huh?\" "
- "IP=127.0.0.1:6676 DE=\"a quote looks like this: \\\"\" IP=127.0.0.1:1122 ");
-
- if(servers != NULL)
- {
- int i, j;
-
- printf("Server info:\n");
- for(i = 0; servers[i] != NULL; i++)
- {
- printf("%u: IP=%s\n", i, servers[i]->ip);
- for(j = 0; j < servers[i]->num_fields; j++)
- printf(" %s='%s'\n", servers[i]->field[j].name, servers[i]->field[j].value);
- }
- free(servers);
- }
- return EXIT_SUCCESS;
-}
-
-#endif /* VERSE_MS_STANDALONE */
diff --git a/extern/verse/dist/verse_ms.h b/extern/verse/dist/verse_ms.h
deleted file mode 100644
index 5a27d3fd446..00000000000
--- a/extern/verse/dist/verse_ms.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * This is Verse Master Server, a small help library to aid application developers
- * make their applications interact with a Verse master server.
- *
- * There are two steps to the process:
- *
- * 1) Send a MS:GET request to a master server. This is done by the verse_ms_get_send()
- * function, which calls verse_send_ping() internally.
- *
- * 2) Parse any returned MS:LIST packets. This is a two-step process. The application
- * still owns the ping callback, and will need to check for received pings that
- * start with MS:LIST, and call the verse_ms_list_parse() function to parse those.
- *
- * A successfully parsed MS:LIST packet will result in an array of VMSServer pointers
- * being returned. Each VMSServer instance describes one server. Use the provided
- * functions to query each server structure.
- *
- * The application should call free() on the returned vector, whenever it is done with
- * the data (perhaps after copying it into application-defined data structures).
- *
- * For a lot more detail about the Verse master server protocol, please see
- * the spec at <http://verse.blender.org/cms/Master_Server__v2.775.0.html>.
- *
- * This code was written in 2006 by Emil Brink. It is released as public domain.
- *
-*/
-
-#define VERSE_MS_VERSION "1.0"
-
-#if defined __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- const char *name; /* Field name. Upper-case. */
- const char *value; /* Field value. Fully parsed, might contain spaces. */
-} VMSField;
-
-typedef struct {
- const char *ip; /* IP address of server, in dotted decimal:port. */
- unsigned int num_fields; /* Number of fields of extra info. */
- VMSField *field; /* Vector of fields, or NULL if none. */
-} VMSServer;
-
-/* Formats and sends a MS:GET ping packet to the master server. The <fields> argument
- * should be a combination of VERSE_MS_FIELD_ mask values. If <tags> is set, it should
- * be a comma-separated set of include/exclude tags, like "a,b,-c,d,-e".
-*/
-#define VERSE_MS_FIELD_DESCRIPTION (1 << 0)
-extern void verse_ms_get_send(const char *address, int fields, const char *tags);
-
-/* Parses a master server response. This will be a string of the form "MS:LIST IP=blah ...",
- * which is split into one struct per IP, and any additional fields parsed (unquoted etc).
- * Returns an array of VMSServer pointers, which is NULL-terminated. Returns NULL if there
- * was a parse error somewhere in the string, no partial success is possible.
-*/
-extern VMSServer ** verse_ms_list_parse(const char *list);
-
-/* This is the only standard field name, currently. */
-#define VERSE_MS_FIELD_DESCRIPTION_NAME "DE" /* Human-readable server description. */
-
-/* Checks wether the given server has a field with the given name. */
-extern int verse_ms_field_exists(const VMSServer *ms, const char *name);
-
-/* Returns the value for the named field in the given server, if present.
- * If not, NULL is returned.
-*/
-extern const char * verse_ms_field_value(const VMSServer *ms, const char *name);
-
-#if defined __cplusplus
-}
-#endif
diff --git a/extern/verse/dist/vs_connection.c b/extern/verse/dist/vs_connection.c
deleted file mode 100644
index 06614a5dc66..00000000000
--- a/extern/verse/dist/vs_connection.c
+++ /dev/null
@@ -1,179 +0,0 @@
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#include "verse.h"
-#include "v_util.h"
-
-#define VS_CONNECTION_CHUNK_SIZE 64
-
-typedef struct{
- VSession *session;
- unsigned int session_count;
-} VSSubscriptionList;
-
-typedef struct{
- VSession session;
- uint32 node_id;
- char name[128];
- char pass[128];
-} VSConnection;
-
-static struct {
- VSConnection *connection;
- unsigned int connection_length;
- VSSubscriptionList **list;
- unsigned int list_length;
- unsigned int current_session;
-} VSConnectionStorage;
-
-void vs_init_connection_storage(void)
-{
- VSConnectionStorage.connection = NULL;
- VSConnectionStorage.connection_length = 0;
- VSConnectionStorage.list = NULL;
- VSConnectionStorage.list_length = 0;
- VSConnectionStorage.current_session = 0;
-}
-
-void vs_add_new_connection(VSession session, const char *name, const char *pass, VNodeID node_id)
-{
- VSConnection *conn;
-
- if(VSConnectionStorage.connection_length % VS_CONNECTION_CHUNK_SIZE == 0)
- VSConnectionStorage.connection = realloc(VSConnectionStorage.connection, (sizeof *VSConnectionStorage.connection) * (VSConnectionStorage.connection_length + VS_CONNECTION_CHUNK_SIZE));
- conn = &VSConnectionStorage.connection[VSConnectionStorage.connection_length];
-
- conn->session = session;
- conn->node_id = node_id;
- v_strlcpy(conn->name, name, sizeof conn->name);
- v_strlcpy(conn->pass, pass, sizeof conn->pass);
-
- VSConnectionStorage.connection_length++;
-}
-
-uint32 vs_get_avatar(void)
-{
- return VSConnectionStorage.connection[VSConnectionStorage.current_session].node_id;
-}
-
-VSession vs_get_session(void)
-{
- return VSConnectionStorage.connection[VSConnectionStorage.current_session].session;
-}
-
-const char * vs_get_user_name(void)
-{
- return VSConnectionStorage.connection[VSConnectionStorage.current_session].name;
-}
-
-const char * vs_get_user_pass(void)
-{
- return VSConnectionStorage.connection[VSConnectionStorage.current_session].pass;
-}
-
-
-void vs_remove_connection(void)
-{
- unsigned int i, j;
- VSession *session;
- VSSubscriptionList *list;
-
- session = VSConnectionStorage.connection[VSConnectionStorage.current_session].session;
- for(i = 0; i < VSConnectionStorage.list_length; i++)
- {
- list = VSConnectionStorage.list[i];
- for(j = 0; j < list->session_count && list->session[j] != session; j++);
- if(j < list->session_count)
- list->session[j] = list->session[--list->session_count];
- }
- j = --VSConnectionStorage.connection_length;
-
- if(VSConnectionStorage.current_session < j)
- {
- VSConnectionStorage.connection[VSConnectionStorage.current_session].session = VSConnectionStorage.connection[j].session;
- VSConnectionStorage.connection[VSConnectionStorage.current_session].node_id = VSConnectionStorage.connection[j].node_id;
- }
- else
- VSConnectionStorage.current_session = 0;
-}
-
-void vs_set_next_session(void)
-{
- if(++VSConnectionStorage.current_session >= VSConnectionStorage.connection_length)
- VSConnectionStorage.current_session = 0;
- if(VSConnectionStorage.connection_length != 0)
- verse_session_set(VSConnectionStorage.connection[VSConnectionStorage.current_session].session);
-}
-
-VSSubscriptionList *vs_create_subscription_list(void)
-{
- VSSubscriptionList *list;
- list = malloc(sizeof *list);
- if(VSConnectionStorage.list_length % VS_CONNECTION_CHUNK_SIZE == 0)
- VSConnectionStorage.list = realloc(VSConnectionStorage.list, (sizeof *VSConnectionStorage.list) * (VSConnectionStorage.list_length + VS_CONNECTION_CHUNK_SIZE));
- VSConnectionStorage.list[VSConnectionStorage.list_length] = list;
- list->session = NULL;
- list->session_count = 0;
- VSConnectionStorage.list_length++;
- return list;
-}
-
-void vs_destroy_subscription_list(VSSubscriptionList *list)
-{
- unsigned int i;
-
- if(list == NULL)
- return;
- if(list->session != NULL)
- free(list->session);
- for(i = 0; i < VSConnectionStorage.list_length && VSConnectionStorage.list[i] != list; i++)
- ;
- if(i < VSConnectionStorage.list_length)
- VSConnectionStorage.list[i] = VSConnectionStorage.list[--VSConnectionStorage.list_length];
- free(list);
-}
-
-/* Returns 1 if subscriber was added, 0 if not (typically meaning it was already on the list). */
-int vs_add_new_subscriptor(VSSubscriptionList *list)
-{
- unsigned int i;
- if(list->session_count % VS_CONNECTION_CHUNK_SIZE == 0)
- list->session = realloc(list->session, (sizeof *list->session) * (list->session_count + VS_CONNECTION_CHUNK_SIZE));
- for(i = 0; i < list->session_count; i++)
- if(list->session[i] == VSConnectionStorage.connection[VSConnectionStorage.current_session].session)
- return 0;
- list->session[list->session_count] = VSConnectionStorage.connection[VSConnectionStorage.current_session].session;
- list->session_count++;
- return 1;
-}
-
-
-void vs_remove_subscriptor(VSSubscriptionList *list)
-{
- unsigned int i;
- VSession *session;
- session = VSConnectionStorage.connection[VSConnectionStorage.current_session].session;
- for(i = 0; i < list->session_count && list->session[i] != session; i++);
- if(i < list->session_count)
- list->session[i] = list->session[--list->session_count];
-}
-
-size_t vs_get_subscript_count(const VSSubscriptionList *list)
-{
- return list != NULL ? list->session_count : 0;
-}
-
-void vs_set_subscript_session(VSSubscriptionList *list, unsigned int session)
-{
- verse_session_set(list->session[session]);
-}
-
-void vs_reset_subscript_session(void)
-{
- verse_session_set(VSConnectionStorage.connection[VSConnectionStorage.current_session].session);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_main.c b/extern/verse/dist/vs_main.c
deleted file mode 100644
index 3b388eecc56..00000000000
--- a/extern/verse/dist/vs_main.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-** A simple Verse server.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "v_network.h"
-#include "v_util.h"
-#include "vs_server.h"
-
-extern VNodeID vs_node_create(VNodeID owner_id, unsigned int type);
-extern void callback_send_node_destroy(void *user_data, VNodeID node_id);
-extern void vs_reset_owner(VNodeID owner_id);
-
-static void callback_send_connect(void *user, const char *name, const char *pass, const char *address, const uint8 *host_id)
-{
- VNodeID avatar;
- VSession *session;
-
- printf("Connecting '%s'\n", name);
- if(TRUE)
- {
- avatar = vs_node_create(~0, V_NT_OBJECT);
- session = verse_send_connect_accept(avatar, address, NULL);
- vs_add_new_connection(session, name, pass, avatar);
-/* vs_avatar_init(avatar, name);*/
- }
- else
- {
- verse_send_connect_terminate(address, "I'm sorry but you are not welcome here.");
- }
-}
-
-static void callback_send_connect_terminate(void *user, char *address, char *bye)
-{
- printf("callback_send_connect_terminate\n");
- vs_reset_owner(vs_get_avatar());
- callback_send_node_destroy(NULL, vs_get_avatar());
- verse_session_destroy(vs_get_session());
- vs_remove_connection();
-}
-
-static void vs_load_host_id(const char *file_name)
-{
- FILE *f;
- uint8 id[V_HOST_ID_SIZE];
- size_t got;
-
- /* Attempt to read key from given filename. Fails silently. */
- if((f = fopen(file_name, "rb")) != NULL)
- {
- if((got = fread(id, 1, sizeof id, f)) > 0)
- {
- printf("Loaded %u-bit host ID key successfully\n", 8 * (got / 3));
- verse_host_id_set(id);
- }
- fclose(f);
- if(got)
- return;
- }
- /* If file didn't open, or reading failed, generate a new key and write it out. */
- verse_host_id_create(id);
- verse_host_id_set(id);
- if((f = fopen(file_name, "wb")) != NULL)
- {
- if(fwrite(id, sizeof id, 1, f) != 1)
- fprintf(stderr, "Warning: Couldn't write host ID to \"%s\"\n", file_name);
- fclose(f);
- }
- else
- fprintf(stderr, "Warning: Couldn't open \"%s\" for host ID writing\n", file_name);
-}
-
-static void cb_sigint_handler(int sig)
-{
- if(sig == SIGINT)
- {
- printf("Verse server terminating\n");
- exit(EXIT_SUCCESS);
- }
-}
-
-static void callback_send_ping(void *user, const char *address, const char *message)
-{
- if(strncmp(message, "DESCRIBE", 8) == 0 && message[8] == ' ')
- vs_master_handle_describe(address, message + 9);
-}
-
-static void usage(void)
-{
- printf("Verse server usage:\n");
- printf(" -h\t\t\tShow this usage information.\n");
- printf(" -ms\t\t\tRegisters the server with a master server at the address\n");
- printf(" \t\t\tgiven with the -ms:ip= option. Off by default.\n");
- printf(" -ms:ip=IP[:PORT]\tSet master server to register with. Implies -ms.\n");
- printf(" \t\t\tThe default address is <%s>.\n", vs_master_get_address());
- printf(" -ms:de=DESC\t\tSet description, sent to master server.\n");
- printf(" -ms:ta=TAGS\t\tSet tags, sent to master server.\n");
- printf(" -port=PORT\t\tSet port to use for incoming connections.\n");
- printf(" -version\t\tPrint version information and exit.\n");
-}
-
-int main(int argc, char **argv)
-{
- uint32 i, seconds, fractions, port = VERSE_STD_CONNECT_PORT;
-
- signal(SIGINT, cb_sigint_handler);
-
- vs_master_set_address("master.uni-verse.org"); /* The default master address. */
- vs_master_set_enabled(FALSE); /* Make sure master server support is disabled. */
- for(i = 1; i < (uint32) argc; i++)
- {
- if(strcmp(argv[i], "-h") == 0)
- {
- usage();
- return EXIT_SUCCESS;
- }
- else if(strcmp(argv[i], "-ms") == 0)
- vs_master_set_enabled(TRUE);
- else if(strncmp(argv[i], "-ms:ip=", 7) == 0)
- {
- vs_master_set_address(argv[i] + 7);
- vs_master_set_enabled(TRUE);
- }
- else if(strncmp(argv[i], "-ms:de=", 7) == 0)
- vs_master_set_desc(argv[i] + 7);
- else if(strncmp(argv[i], "-ms:ta=", 7) == 0)
- vs_master_set_tags(argv[i] + 7);
- else if(strncmp(argv[i], "-port=", 6) == 0)
- port = strtoul(argv[i] + 6, NULL, 0);
- else if(strcmp(argv[i], "-version") == 0)
- {
- printf("r%up%u%s\n", V_RELEASE_NUMBER, V_RELEASE_PATCH, V_RELEASE_LABEL);
- return EXIT_SUCCESS;
- }
- else
- fprintf(stderr, "Ignoring unknown argument \"%s\", try -h for help\n", argv[i]);
- }
-
- printf("Verse Server r%up%u%s by Eskil Steenberg <http://verse.blender.org/>\n", V_RELEASE_NUMBER, V_RELEASE_PATCH, V_RELEASE_LABEL);
- verse_set_port(port); /* The Verse standard port. */
- printf(" Listening on port %d\n", port);
-
- /* Seed the random number generator. Still rather too weak for crypto, I guess. */
- v_n_get_current_time(&seconds, &fractions);
- srand(seconds ^ fractions);
-
- vs_load_host_id("host_id.rsa");
- vs_init_node_storage();
- vs_o_callback_init();
- vs_g_callback_init();
- vs_m_callback_init();
- vs_b_callback_init();
- vs_t_callback_init();
- vs_c_callback_init();
- vs_a_callback_init();
- vs_h_callback_init();
- init_callback_node_storage();
- verse_callback_set(verse_send_ping, callback_send_ping, NULL);
- verse_callback_set(verse_send_connect, callback_send_connect, NULL);
- verse_callback_set(verse_send_connect_terminate, callback_send_connect_terminate, NULL);
-
- while(TRUE)
- {
- vs_set_next_session();
- verse_callback_update(1000000);
- vs_master_update();
- }
- return EXIT_SUCCESS;
-}
-
-#endif /* V_GENERATE_FUNC_MODE */
diff --git a/extern/verse/dist/vs_master.c b/extern/verse/dist/vs_master.c
deleted file mode 100644
index 4fa020d58b6..00000000000
--- a/extern/verse/dist/vs_master.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Master server communication code.
-*/
-
-#include <stdio.h>
-#include <string.h>
-
-#include "verse.h"
-#include "v_util.h"
-#include "vs_server.h"
-
-#define MASTER_SERVER_PERIOD (60.0) /* Period between ANNOUNCE to master server, in seconds. */
-
-static struct {
- boolean enabled;
- boolean started;
- const char *master;
- char desc[64];
- const char *tags;
- VUtilTimer timer;
-} server_info;
-
-#define LEFT(d) (sizeof server_info.desc - (d - server_info.desc) - 1)
-
-void vs_master_set_enabled(boolean enabled)
-{
- server_info.enabled = enabled;
-}
-
-const char * vs_master_get_address(void)
-{
- return server_info.master;
-}
-
-void vs_master_set_address(const char *address)
-{
- server_info.master = address;
-}
-
-void vs_master_set_desc(const char *desc)
-{
- const char *src = desc;
- char *dst = server_info.desc;
-
- for(; *src != '\0' && LEFT(dst) > 0;)
- {
- if(*src == '"')
- {
- if(LEFT(dst) < 2)
- break;
- *dst++ = '\\';
- }
- else if(*src == '\\')
- {
- if(LEFT(dst) < 2)
- break;
- *dst++ = '\\';
- }
- *dst++ = *src++;
- }
- *dst = '\0';
-}
-
-void vs_master_set_tags(const char *tags)
-{
- server_info.tags = tags; /* This needs more protection, instead of relying on the master server. */
-}
-
-void vs_master_update(void)
-{
- if(!server_info.enabled || server_info.master == NULL)
- return;
-
- if(!server_info.started)
- {
- v_timer_start(&server_info.timer);
- v_timer_advance(&server_info.timer, MASTER_SERVER_PERIOD);
- server_info.started = TRUE;
- return;
- }
- if(v_timer_elapsed(&server_info.timer) < MASTER_SERVER_PERIOD)
- return;
- verse_send_ping(server_info.master, "MS:ANNOUNCE");
- v_timer_start(&server_info.timer);
-/* printf("MS:ANNOUNCE sent to %s\n", server_info.master);*/
-}
-
-/* Check if a description request, of the form "A,B,C,...,D" includes the given keyword. This needs to
- * do more than just a simple strstr(), since the keyword may be a prefix. Shades of OpenGL extensions.
-*/
-static int desc_has_keyword(const char *desc, const char *keyword)
-{
- const char *ptr;
-
- if(desc == NULL || *desc == '\0') /* Quick-check for empty description. */
- return 0;
-
- if((ptr = strstr(desc, keyword)) != NULL)
- {
- size_t kl = strlen(keyword);
-
- return ptr[kl] == ',' || ptr[kl] == '\0';
- }
- return 0;
-}
-
-static int keyword_fits(size_t used, size_t max, const char *key, const char *value)
-{
- size_t vsize = 0;
-
- if(key != NULL && value != NULL)
- vsize += 1 + strlen(key) + 1 + 1 + strlen(value) + 1;
-
- return max - 1 - used >= vsize;
-}
-
-static char * append_desc(char *buf, const char *key, const char *value)
-{
- return buf + sprintf(buf, " %s=\"%s\"", key, value);
-}
-
-void vs_master_handle_describe(const char *address, const char *message)
-{
- char desc[1380] = "DESCRIPTION", *put = desc + 11;
-
- if(desc_has_keyword(message, "DE") && server_info.desc != NULL && keyword_fits(put - desc, sizeof desc, "DE", server_info.desc))
- put = append_desc(put, "DE", server_info.desc);
- if(desc_has_keyword(message, "TA") && server_info.tags != NULL && keyword_fits(put - desc, sizeof desc, "TA", server_info.tags))
- put = append_desc(put, "TA", server_info.tags);
- verse_send_ping(address, desc);
-}
diff --git a/extern/verse/dist/vs_node_audio.c b/extern/verse/dist/vs_node_audio.c
deleted file mode 100644
index e69d3d9b3ec..00000000000
--- a/extern/verse/dist/vs_node_audio.c
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-typedef struct {
- void **data;
- unsigned int length;
- char name[16];
- VNABlockType type;
- real64 frequency;
- VSSubscriptionList *subscribers;
-} VSNLayer;
-
-typedef struct {
- char name[16];
- VSSubscriptionList *subscribers;
-} VSNStream;
-
-typedef struct{
- VSNodeHead head;
- VSNLayer *buffers;
- unsigned int buffer_count;
- VSNStream *streams;
- unsigned int stream_count;
-} VSNodeAudio;
-
-VSNodeAudio * vs_a_create_node(unsigned int owner)
-{
- VSNodeAudio *node;
- char name[48];
- unsigned int i;
-
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_AUDIO);
- sprintf(name, "Audio_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
- node->buffer_count = 16;
- node->buffers = malloc((sizeof *node->buffers) * node->buffer_count);
- for(i = 0; i < node->buffer_count; i++)
- node->buffers[i].name[0] = 0;
- node->stream_count = 16;
- node->streams = malloc((sizeof *node->streams) * node->stream_count);
- for(i = 0; i < node->stream_count; i++)
- node->streams[i].name[0] = 0;
-
- return node;
-}
-
-void vs_a_destroy_node(VSNodeAudio *node)
-{
- unsigned int i, j;
- destroy_node_head(&node->head);
-
- for(i = 0; i < node->buffer_count; i++)
- {
- if(node->buffers[i].name[0] != 0)
- {
- for(j = 0; j < node->buffers[i].length; j++)
- if(node->buffers[i].data[j] != NULL)
- free(node->buffers[i].data[j]);
- free(node->buffers[i].data);
- }
- }
- free(node->buffers);
- free(node->streams);
- free(node);
-}
-
-void vs_a_subscribe(VSNodeAudio *node)
-{
- unsigned int i;
- if(node == NULL)
- return;
- for(i = 0; i < node->buffer_count; i++)
- if(node->buffers[i].name[0] != 0)
- verse_send_a_buffer_create(node->head.id, i, node->buffers[i].name, node->buffers[i].type,
- node->buffers[i].frequency);
- for(i = 0; i < node->stream_count; i++)
- if(node->streams[i].name[0] != 0)
- verse_send_a_stream_create(node->head.id, i, node->streams[i].name);
-}
-
-void vs_a_unsubscribe(VSNodeAudio *node)
-{
- unsigned int i;
- for(i = 0; i < node->buffer_count; i++)
- if(node->buffers[i].name[0] != 0)
- vs_remove_subscriptor(node->buffers[i].subscribers);
- for(i = 0; i < node->stream_count; i++)
- if(node->streams[i].name[0] != 0)
- vs_remove_subscriptor(node->streams[i].subscribers);
-}
-
-static void callback_send_a_stream_create(void *user, VNodeID node_id, VLayerID stream_id, const char *name)
-{
- VSNodeAudio *node;
- unsigned int i, j, count;
-
- node = (VSNodeAudio *) vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
-
- for(i = 0; i < node->stream_count; i++)
- {
- if(stream_id != i)
- {
- for(j = 0; name[j] == node->streams[i].name[j] && name[j] != 0; j++);
- if(name[j] == node->streams[i].name[j])
- return;
- }
- }
- if(stream_id >= node->stream_count || node->streams[stream_id].name[0] == 0)
- {
- for(stream_id = 0; stream_id < node->stream_count && node->streams[stream_id].name[0] != 0; stream_id++);
- if(stream_id == node->stream_count)
- {
- stream_id = node->stream_count;
- node->stream_count += 16;
- node->streams = realloc(node->streams, (sizeof *node->streams) * node->stream_count);
- for(i = stream_id; i < node->stream_count; i++)
- node->streams[i].name[0] = 0;
- }
- node->streams[stream_id].subscribers = vs_create_subscription_list();
- }
- for(i = 0; name[i] != 0 && i < 15; i++)
- node->streams[stream_id].name[i] = name[i];
- node->streams[stream_id].name[i] = 0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_a_stream_create(node_id, stream_id, name);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_a_stream_destroy(void *user, VNodeID node_id, VLayerID stream_id)
-{
- VSNodeAudio *node;
- unsigned int i, count;
-
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL || stream_id >= node->stream_count || node->streams[stream_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->streams[stream_id].subscribers);
- node->streams[stream_id].name[0] = 0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_a_stream_destroy(node_id, stream_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_a_buffer_create(void *user, VNodeID node_id, VBufferID buffer_id, const char *name,
- VNABlockType type, real64 frequency)
-{
- VSNodeAudio *node;
- unsigned int i, j, count;
-
- if(frequency < 0.0)
- return;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
-
- for(i = 0; i < node->buffer_count; i++)
- {
- if(buffer_id != i)
- {
- for(j = 0; name[j] == node->buffers[i].name[j] && name[j] != 0; j++);
- if(name[j] == node->buffers[i].name[j])
- return;
- }
- }
-
- if(buffer_id < node->buffer_count && node->buffers[buffer_id].name[0] != 0 && type != node->buffers[buffer_id].type)
- {
- free(node->buffers[buffer_id].data);
- vs_destroy_subscription_list(node->buffers[buffer_id].subscribers);
- node->buffers[buffer_id].name[0] = 0;
- }
-
- if(buffer_id >= node->buffer_count || node->buffers[buffer_id].name[0] == 0)
- {
- for(buffer_id = 0; buffer_id < node->buffer_count && node->buffers[buffer_id].name[0] != 0; buffer_id++);
- if(buffer_id == node->buffer_count)
- {
- buffer_id = node->buffer_count;
- node->buffer_count += 16;
- node->buffers = realloc(node->buffers, (sizeof *node->buffers) * node->buffer_count);
- for(i = buffer_id; i < node->buffer_count; i++)
- node->buffers[i].name[0] = 0;
- }
- node->buffers[buffer_id].subscribers = vs_create_subscription_list();
- node->buffers[buffer_id].type = type;
- node->buffers[buffer_id].frequency = frequency;
- node->buffers[buffer_id].length = 64;
- node->buffers[buffer_id].data = malloc(sizeof(*node->buffers[buffer_id].data) * node->buffers[buffer_id].length);
- for(i = 0; i < node->buffers[buffer_id].length; i++)
- node->buffers[buffer_id].data[i] = NULL;
- }
- for(i = 0; name[i] != 0 && i < 15; i++)
- node->buffers[buffer_id].name[i] = name[i];
- node->buffers[buffer_id].name[i] = 0;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_a_buffer_create(node_id, buffer_id, name, type, frequency);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_a_buffer_destroy(void *user, VNodeID node_id, VBufferID buffer_id)
-{
- VSNodeAudio *node;
- unsigned int i, count;
-
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL || buffer_id >= node->buffer_count || node->buffers[buffer_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->buffers[buffer_id].subscribers);
- node->buffers[buffer_id].name[0] = 0;
- free(node->buffers[buffer_id].data);
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_a_buffer_destroy(node_id, buffer_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_a_buffer_subscribe(void *user, VNodeID node_id, VLayerID buffer_id)
-{
- VSNodeAudio *node;
- unsigned int i;
-
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->buffer_count <= buffer_id)
- return;
- if(node->buffers[buffer_id].name[0] == 0)
- return;
- vs_add_new_subscriptor(node->buffers[buffer_id].subscribers);
- for(i = 0; i < node->buffers[buffer_id].length; i++)
- {
- if(node->buffers[buffer_id].data[i] != NULL)
- verse_send_a_block_set(node_id, buffer_id, i, node->buffers[buffer_id].type, node->buffers[buffer_id].data[i]);
- }
-}
-
-static void callback_send_a_buffer_unsubscribe(void *user, VNodeID node_id, VLayerID buffer_id)
-{
- VSNodeAudio *node;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->buffer_count <= buffer_id)
- return;
- if(node->buffers[buffer_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->buffers[buffer_id].subscribers);
-}
-
-static void callback_send_a_block_set(void *user, VNodeID node_id, VLayerID buffer_id, uint32 block_index,
- VNABlockType type, const VNABlock *data)
-{
- static const size_t blocksize[] = {
- VN_A_BLOCK_SIZE_INT8 * sizeof (int8),
- VN_A_BLOCK_SIZE_INT16 * sizeof (int16),
- VN_A_BLOCK_SIZE_INT24 * 3 * sizeof (int8),
- VN_A_BLOCK_SIZE_INT32 * sizeof (int32),
- VN_A_BLOCK_SIZE_REAL32 * sizeof (real32),
- VN_A_BLOCK_SIZE_REAL64 * sizeof (real64)
- };
- VSNodeAudio *node;
- unsigned int i, count;
-
- if(type > VN_A_BLOCK_REAL64) /* Protect blocksize array. */
- return;
-
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->buffers[buffer_id].name[0] == 0)
- return;
- if(type != node->buffers[buffer_id].type) /* Disregard attempts to set data of wrong type. */
- return;
- if(block_index > node->buffers[buffer_id].length)
- {
- node->buffers[buffer_id].data = realloc(node->buffers[buffer_id].data,
- (sizeof *node->buffers[buffer_id].data) * (block_index + 64));
- for(i = node->buffers[buffer_id].length; i < block_index + 64; i++)
- node->buffers[buffer_id].data[i] = NULL;
- node->buffers[buffer_id].length = block_index + 64;
- }
-
- if(node->buffers[buffer_id].data[block_index] == NULL)
- node->buffers[buffer_id].data[block_index] = malloc(blocksize[type]);
- if(node->buffers[buffer_id].data[block_index] != NULL)
- {
- memcpy(node->buffers[buffer_id].data[block_index], data, blocksize[type]);
- count = vs_get_subscript_count(node->buffers[buffer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->buffers[buffer_id].subscribers, i);
- verse_send_a_block_set(node_id, buffer_id, block_index, type, data);
- }
- vs_reset_subscript_session();
- }
-}
-
-static void callback_send_a_block_clear(void *user, VNodeID node_id, VLayerID buffer_id, uint32 id)
-{
- VSNodeAudio *node;
- unsigned int i, count;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->buffer_count <= buffer_id)
- return;
- if(node->buffers[buffer_id].name[0] == 0)
- return;
- if(id >= node->buffers[buffer_id].length)
- return;
- if(node->buffers[buffer_id].data[id] == NULL)
- return;
- free(node->buffers[buffer_id].data[id]);
- node->buffers[buffer_id].data[id] = NULL;
- count = vs_get_subscript_count(node->buffers[buffer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->buffers[buffer_id].subscribers, i);
- verse_send_a_block_clear(node_id, buffer_id, id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_a_stream_subscribe(void *user, VNodeID node_id, VLayerID stream_id)
-{
- VSNodeAudio *node;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->stream_count <= stream_id)
- return;
- if(node->streams[stream_id].name[0] == 0)
- return;
- vs_add_new_subscriptor(node->streams[stream_id].subscribers);
-}
-
-static void callback_send_a_stream_unsubscribe(void *user, VNodeID node_id, VLayerID stream_id)
-{
- VSNodeAudio *node;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->stream_count <= stream_id)
- return;
- if(node->streams[stream_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->streams[stream_id].subscribers);
-}
-
-static void callback_send_a_stream(void *user, VNodeID node_id, VLayerID stream_id, uint32 time_s, uint32 time_f,
- VNABlockType type, real64 frequency, const VNABlock *data)
-{
- VSNodeAudio *node;
- unsigned int i, count;
-
- if(frequency < 0)
- return;
- node = (VSNodeAudio *)vs_get_node(node_id, V_NT_AUDIO);
- if(node == NULL)
- return;
- if(node->stream_count <= stream_id)
- return;
- if(node->streams[stream_id].name[0] == 0)
- return;
- count = vs_get_subscript_count(node->streams[stream_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->streams[stream_id].subscribers, i);
- verse_send_a_stream(node_id, stream_id, time_s, time_f, type, frequency, data);
- }
- vs_reset_subscript_session();
-}
-
-void vs_a_callback_init(void)
-{
- verse_callback_set(verse_send_a_buffer_create, callback_send_a_buffer_create, NULL);
- verse_callback_set(verse_send_a_buffer_destroy, callback_send_a_buffer_destroy, NULL);
- verse_callback_set(verse_send_a_buffer_subscribe, callback_send_a_buffer_subscribe, NULL);
- verse_callback_set(verse_send_a_buffer_unsubscribe, callback_send_a_buffer_unsubscribe, NULL);
- verse_callback_set(verse_send_a_block_set, callback_send_a_block_set, NULL);
- verse_callback_set(verse_send_a_block_clear, callback_send_a_block_clear, NULL);
- verse_callback_set(verse_send_a_stream_create, callback_send_a_stream_create, NULL);
- verse_callback_set(verse_send_a_stream_destroy, callback_send_a_stream_destroy, NULL);
- verse_callback_set(verse_send_a_stream_subscribe, callback_send_a_stream_subscribe, NULL);
- verse_callback_set(verse_send_a_stream_unsubscribe, callback_send_a_stream_unsubscribe, NULL);
- verse_callback_set(verse_send_a_stream, callback_send_a_stream, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_bitmap.c b/extern/verse/dist/vs_node_bitmap.c
deleted file mode 100644
index 566287a86d4..00000000000
--- a/extern/verse/dist/vs_node_bitmap.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-typedef struct {
- VNBLayerType type;
- char name[16];
- void *layer;
- VSSubscriptionList *subscribers;
-} VSNBLayers;
-
-typedef struct {
- VSNodeHead head;
- uint16 size[3];
- uint32 partial_tile_col, partial_tile_row; /* These rows/columns are partial. ~0 for none. */
- VSNBLayers *layers;
- unsigned int layer_count;
-} VSNodeBitmap;
-
-static unsigned long tile_counter = 0;
-
-VSNodeBitmap * vs_b_create_node(unsigned int owner)
-{
- VSNodeBitmap *node;
- char name[48];
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_BITMAP);
- sprintf(name, "Bitmap_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
-
- node->size[0] = 0;
- node->size[1] = 0;
- node->size[2] = 0;
- node->partial_tile_col = ~0;
- node->partial_tile_row = ~0;
- node->layers = NULL;
- node->layer_count = 0;
-
- return node;
-}
-
-void vs_b_destroy_node(VSNodeBitmap *node)
-{
- unsigned int i;
- destroy_node_head(&node->head);
- if(node->layers != NULL)
- {
- for(i = 0; i < node->layer_count; i++)
- if(node->layers[i].layer != NULL)
- free(node->layers[i].layer);
- free(node->layers);
- }
- free(node);
-}
-
-void vs_b_subscribe(VSNodeBitmap *node)
-{
- unsigned int i;
- verse_send_b_dimensions_set(node->head.id, node->size[0], node->size[1], node->size[2]);
- for(i = 0; i < node->layer_count; i++)
- if(node->layers[i].name[0] != 0)
- verse_send_b_layer_create(node->head.id, (uint16)i, node->layers[i].name, (uint8)node->layers[i].type);
-}
-
-
-void vs_b_unsubscribe(VSNodeBitmap *node)
-{
- unsigned int i;
- for(i = 0; i < node->layer_count; i++)
- if(node->layers[i].name[0] != 0)
- vs_remove_subscriptor(node->layers[i].subscribers);
-}
-
-static void callback_send_b_dimensions_set(void *user, VNodeID node_id, uint16 width, uint16 height, uint16 depth)
-{
- VSNodeBitmap *node;
- unsigned int i, j, k, count, tiles[2], read, write, end = 0;
-
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- return;
- tiles[0] = (width + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE;
- tiles[1] = (height + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE;
- node->size[0] = (node->size[0] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE;
- node->size[1] = (node->size[1] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE;
- if(node->size[0] > tiles[0])
- node->size[0] = tiles[0];
- if(node->size[1] > tiles[1])
- node->size[1] = tiles[1];
- if(node->size[2] > depth)
- node->size[2] = depth;
-
- for(i = 0; i < node->layer_count; i++)
- {
- if(node->layers[i].name[0] != 0)
- {
- switch(node->layers[i].type)
- {
- case VN_B_LAYER_UINT1 :
- {
- uint16 *array, *old;
- write = 0;
- old = node->layers[i].layer;
- array = node->layers[i].layer = malloc((sizeof *array) * tiles[0] * tiles[1] * depth);
- for(j = 0; j < node->size[2]; j++)
- {
- for(k = 0; k < node->size[1]; k++)
- {
- read = (j * node->size[1] * node->size[0] + k * node->size[0]);
-
- end = (j * tiles[1] * tiles[0] + k * tiles[0] + node->size[0]);
- while(write < end)
- array[write++] = old[read++];
-
- end = (j * tiles[1] * tiles[0] + (k + 1) * tiles[0]);
- while(write < end)
- array[write++] = 0;
- }
- end = ((j + 1) * tiles[1] * tiles[0]);
- while(write < end)
- array[write++] = 0;
- }
- k = depth * tiles[1] * tiles[0];
- while(write < end)
- array[write++] = 0;
- }
- break;
- case VN_B_LAYER_UINT8 :
- {
- uint8 *array, *old;
- write = 0;
- old = node->layers[i].layer;
- array = node->layers[i].layer = malloc((sizeof *array) * tiles[0] * tiles[1] * depth * VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- for(j = 0; j < node->size[2]; j++)
- {
- for(k = 0; k < node->size[1]; k++)
- {
- read = (j * node->size[1] * node->size[0] + k * node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
-
- end = (j * tiles[1] * tiles[0] + k * tiles[0] + node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = old[read++];
-
- end = (j * tiles[1] * tiles[0] + (k + 1) * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = ((j + 1) * tiles[1] * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = depth * tiles[1] * tiles[0] * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- break;
- case VN_B_LAYER_UINT16 :
- {
- uint16 *array, *old;
- write = 0;
- old = node->layers[i].layer;
- array = node->layers[i].layer = malloc((sizeof *array) * tiles[0] * tiles[1] * depth * VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- for(j = 0; j < node->size[2]; j++)
- {
- for(k = 0; k < node->size[1]; k++)
- {
- read = (j * node->size[1] * node->size[0] + k * node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
-
- end = (j * tiles[1] * tiles[0] + k * tiles[0] + node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = old[read++];
-
- end = (j * tiles[1] * tiles[0] + (k + 1) * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = ((j + 1) * tiles[1] * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = depth * tiles[1] * tiles[0] * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- break;
- case VN_B_LAYER_REAL32 :
- {
- real32 *array, *old;
- write = 0;
- old = node->layers[i].layer;
- array = node->layers[i].layer = malloc((sizeof *array) * tiles[0] * tiles[1] * depth * VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- for(j = 0; j < node->size[2]; j++)
- {
- for(k = 0; k < node->size[1]; k++)
- {
- read = (j * node->size[1] * node->size[0] + k * node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
-
- end = (j * tiles[1] * tiles[0] + k * tiles[0] + node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = old[read++];
-
- end = (j * tiles[1] * tiles[0] + (k + 1) * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = ((j + 1) * tiles[1] * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = depth * tiles[1] * tiles[0] * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- break;
- case VN_B_LAYER_REAL64 :
- {
- real64 *array, *old;
- write = 0;
- old = node->layers[i].layer;
- array = node->layers[i].layer = malloc((sizeof *array) * tiles[0] * tiles[1] * depth * VN_B_TILE_SIZE * VN_B_TILE_SIZE);
- for(j = 0; j < node->size[2]; j++)
- {
- for(k = 0; k < node->size[1]; k++)
- {
- read = (j * node->size[1] * node->size[0] + k * node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
-
- end = (j * tiles[1] * tiles[0] + k * tiles[0] + node->size[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = old[read++];
-
- end = (j * tiles[1] * tiles[0] + (k + 1) * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = ((j + 1) * tiles[1] * tiles[0]) * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- end = depth * tiles[1] * tiles[0] * VN_B_TILE_SIZE * VN_B_TILE_SIZE;
- while(write < end)
- array[write++] = 0;
- }
- break;
- }
- }
- }
-
- node->size[0] = width;
- node->size[1] = height;
- node->size[2] = depth;
- node->partial_tile_col = (width % VN_B_TILE_SIZE) != 0 ? (width + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE - 1 : ~0;
- node->partial_tile_row = (height % VN_B_TILE_SIZE) != 0 ? (height + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE - 1 : ~0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_b_dimensions_set(node_id, width, height, depth);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_b_layer_create(void *user, VNodeID node_id, VLayerID layer_id, char *name, uint8 type)
-{
- VSNodeBitmap *node;
- unsigned int i, count;
-
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- return;
- if(node->layer_count <= layer_id || node->layers[layer_id].name[0] == 0)
- {
- for(layer_id = 0; layer_id < node->layer_count && node->layers[layer_id].name[0] != 0; layer_id++)
- ;
- if(layer_id == node->layer_count)
- {
- node->layers = realloc(node->layers, (sizeof *node->layers) * (node->layer_count + 16));
- for(i = node->layer_count; i < node->layer_count + 16; i++)
- {
- node->layers[i].layer = NULL;
- node->layers[i].type = 0;
- node->layers[i].name[0] = 0;
- node->layers[i].subscribers = NULL;
- }
- node->layer_count += 16;
- }
- node->layers[layer_id].subscribers = vs_create_subscription_list();
- node->layers[layer_id].type = type + 1;
- }
-
- if(node->layers[layer_id].type != type || node->layers[layer_id].name[0] == 0)
- {
- count = ((node->size[0] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE) * ((node->size[1] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE);
- count *= VN_B_TILE_SIZE * VN_B_TILE_SIZE * node->size[2];
- if(node->layers[layer_id].layer != NULL)
- free(node->layers[layer_id].layer);
- if(count != 0)
- {
- switch(type)
- {
- case VN_B_LAYER_UINT1 :
- node->layers[layer_id].layer = malloc(sizeof(uint8) * count / 8);
- memset(node->layers[layer_id].layer, 0, count * sizeof(uint8) / 8);
- break;
- case VN_B_LAYER_UINT8 :
- node->layers[layer_id].layer = malloc(sizeof(uint8) * count);
- memset(node->layers[layer_id].layer, 0, count * sizeof(uint8));
- break;
- case VN_B_LAYER_UINT16 :
- node->layers[layer_id].layer = malloc(sizeof(uint16) * count);
- memset(node->layers[layer_id].layer, 0, count * sizeof(uint16));
- break;
- case VN_B_LAYER_REAL32 :
- node->layers[layer_id].layer = malloc(sizeof(real32) * count);
- memset(node->layers[layer_id].layer, 0, count * sizeof(real32));
- break;
- case VN_B_LAYER_REAL64 :
- node->layers[layer_id].layer = malloc(sizeof(real64) * count);
- memset(node->layers[layer_id].layer, 0, count * sizeof(real64));
- break;
- }
- }else
- node->layers[layer_id].layer = NULL;
- }
- node->layers[layer_id].type = type;
- for(i = 0; i < 15 && name[i] != 0; i++)
- node->layers[layer_id].name[i] = name[i];
- node->layers[layer_id].name[i] = 0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_b_layer_create(node_id, layer_id, name, type);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_b_layer_destroy(void *user, VNodeID node_id, VLayerID layer_id)
-{
- VSNodeBitmap *node;
- unsigned int i, count;
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- return;
- if(layer_id >= node->layer_count || node->layers[layer_id].layer == NULL)
- return;
- if(node->layers[layer_id].layer != NULL)
- free(node->layers[layer_id].layer);
- node->layers[layer_id].layer = NULL;
- node->layers[layer_id].type = 0;
- node->layers[layer_id].name[0] = 0;
- vs_destroy_subscription_list(node->layers[layer_id].subscribers);
- node->layers[layer_id].subscribers = NULL;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_b_layer_destroy(node_id, layer_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_b_layer_subscribe(void *user, VNodeID node_id, VLayerID layer_id, uint8 level)
-{
- VSNodeBitmap *node;
- const void *data;
- unsigned int i, j, k, tile[3];
-
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- return;
- if(layer_id >= node->layer_count || node->layers[layer_id].layer == NULL)
- return;
- if(vs_add_new_subscriptor(node->layers[layer_id].subscribers) == 0)
- return;
- tile[0] = ((node->size[0] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE);
- tile[1] = ((node->size[1] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE);
- tile[2] = node->size[2];
- data = node->layers[layer_id].layer;
- switch(node->layers[layer_id].type)
- {
- case VN_B_LAYER_UINT1:
- for(i = 0; i < tile[0]; i++)
- for(j = 0; j < tile[1]; j++)
- for(k = 0; k < tile[2]; k++)
- verse_send_b_tile_set(node_id, layer_id, i, j, k, VN_B_LAYER_UINT1, (VNBTile *) &((uint8*)data)[(tile[0] * tile[1] * k + j * tile[0] + i) * VN_B_TILE_SIZE * VN_B_TILE_SIZE / 8]);
- break;
- case VN_B_LAYER_UINT8 :
- for(i = 0; i < tile[0]; i++)
- for(j = 0; j < tile[1]; j++)
- for(k = 0; k < tile[2]; k++)
- verse_send_b_tile_set(node_id, layer_id, i, j, k, VN_B_LAYER_UINT8, (VNBTile *) &((uint8*)data)[(tile[0] * tile[1] * k + j * tile[0] + i) * VN_B_TILE_SIZE * VN_B_TILE_SIZE]);
- break;
- case VN_B_LAYER_UINT16 :
- for(i = 0; i < tile[0]; i++)
- for(j = 0; j < tile[1]; j++)
- for(k = 0; k < tile[2]; k++)
- verse_send_b_tile_set(node_id, layer_id, i, j, k, VN_B_LAYER_UINT16, (VNBTile *) &((uint16*)data)[(tile[0] * tile[1] * k + j * tile[0] + i) * VN_B_TILE_SIZE * VN_B_TILE_SIZE]);
- break;
- case VN_B_LAYER_REAL32 :
- for(i = 0; i < tile[0]; i++)
- for(j = 0; j < tile[1]; j++)
- for(k = 0; k < tile[2]; k++)
- verse_send_b_tile_set(node_id, layer_id, i, j, k, VN_B_LAYER_REAL32, (VNBTile *) &((real32*)data)[(tile[0] * tile[1] * k + j * tile[0] + i) * VN_B_TILE_SIZE * VN_B_TILE_SIZE]);
- break;
- case VN_B_LAYER_REAL64 :
- for(i = 0; i < tile[0]; i++)
- for(j = 0; j < tile[1]; j++)
- for(k = 0; k < tile[2]; k++)
- verse_send_b_tile_set(node_id, layer_id, i, j, k, VN_B_LAYER_REAL64, (VNBTile *) &((real64*)data)[(tile[0] * tile[1] * k + j * tile[0] + i) * VN_B_TILE_SIZE * VN_B_TILE_SIZE]);
- break;
- }
-}
-
-static void callback_send_b_layer_unsubscribe(void *user, VNodeID node_id, VLayerID layer_id)
-{
- VSNodeBitmap *node;
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- return;
- if(layer_id >= node->layer_count || node->layers[layer_id].layer == NULL)
- return;
- vs_remove_subscriptor(node->layers[layer_id].subscribers);
-}
-
-/* Clear any pixels that lie outside the image, so we don't violoate specs when
- * sending (stored version of) the tile out to subscribers.
-*/
-static void clear_outside(const VSNodeBitmap *node, uint16 tile_x, uint16 tile_y, uint8 type, VNBTile *tile)
-{
- int x, y, bx, by, p;
-
- by = tile_y * VN_B_TILE_SIZE;
- for(y = p = 0; y < VN_B_TILE_SIZE; y++, by++)
- {
- bx = tile_x * VN_B_TILE_SIZE;
- for(x = 0; x < VN_B_TILE_SIZE; x++, bx++, p++)
- {
- /* Simply test current pixel against bitmap size. Not quick, but simple. */
- if(bx >= node->size[0] || by >= node->size[1])
- {
- switch(type)
- {
- case VN_B_LAYER_UINT1:
- tile->vuint1[y] &= ~(128 >> x);
- break;
- case VN_B_LAYER_UINT8:
- tile->vuint8[p] = 0;
- break;
- case VN_B_LAYER_UINT16:
- tile->vuint16[p] = 0;
- break;
- case VN_B_LAYER_REAL32:
- tile->vreal32[p] = 0.0f;
- break;
- case VN_B_LAYER_REAL64:
- tile->vreal64[p] = 0.0;
- break;
- }
- }
- }
- }
-}
-
-static void callback_send_b_tile_set(void *user, VNodeID node_id, VLayerID layer_id,
- uint16 tile_x, uint16 tile_y, uint16 tile_z, uint8 type, VNBTile *data)
-{
- VSNodeBitmap *node;
- unsigned int i, count, tile[3];
-
- if((node = (VSNodeBitmap *)vs_get_node(node_id, V_NT_BITMAP)) == NULL)
- {
- printf("got tile for unknown bitmpa node %u, aborting\n", node_id);
- return;
- }
- if(layer_id >= node->layer_count || node->layers[layer_id].layer == NULL || node->layers[layer_id].type != type)
- {
- printf("node %u got tile for bad layer %u (have %u) %p\n", node_id, layer_id, node->layer_count, layer_id < node->layer_count ? node->layers[layer_id].layer : NULL);
- return;
- }
- if(tile_x >= ((node->size[0] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE) || tile_y >= ((node->size[1] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE) || tile_z >= node->size[2])
- {
- printf("got tile that is outside image, at (%u,%u,%u)\n", tile_x, tile_y, tile_z);
- return;
- }
-
- tile_counter++;
-
- tile[0] = ((node->size[0] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE);
- tile[1] = ((node->size[1] + VN_B_TILE_SIZE - 1) / VN_B_TILE_SIZE);
- tile[2] = node->size[2];
-
- /* If tile is in a partial column or row, clear the "outside" pixels. */
- if((uint32) tile_x == node->partial_tile_col || (uint32) tile_y == node->partial_tile_row)
- clear_outside(node, tile_x, tile_y, type, data);
-
- switch(node->layers[layer_id].type)
- {
- case VN_B_LAYER_UINT1 :
- {
- uint8 *p;
- p = &((uint8 *)node->layers[layer_id].layer)[(tile[0] * tile[1] * tile_z + tile_y * tile[0] + tile_x) * VN_B_TILE_SIZE * VN_B_TILE_SIZE/8];
- memcpy(p, data->vuint1, VN_B_TILE_SIZE * sizeof(uint8));
- }
- break;
- case VN_B_LAYER_UINT8 :
- {
- uint8 *p;
- p = &((uint8 *)node->layers[layer_id].layer)[(tile[0] * tile[1] * tile_z + tile_y * tile[0] + tile_x) * VN_B_TILE_SIZE * VN_B_TILE_SIZE];
- memcpy(p, data->vuint8, VN_B_TILE_SIZE * VN_B_TILE_SIZE * sizeof(uint8));
- }
- break;
- case VN_B_LAYER_UINT16 :
- {
- uint16 *p;
- p = &((uint16 *)node->layers[layer_id].layer)[(tile[0] * tile[1] * tile_z + tile_y * tile[0] + tile_x) * VN_B_TILE_SIZE * VN_B_TILE_SIZE];
- memcpy(p, data->vuint16, VN_B_TILE_SIZE * VN_B_TILE_SIZE * sizeof(uint16));
- }
- break;
- case VN_B_LAYER_REAL32 :
- {
- real32 *p;
- p = &((real32 *)node->layers[layer_id].layer)[(tile[0] * tile[1] * tile_z + tile_y * tile[0] + tile_x) * VN_B_TILE_SIZE * VN_B_TILE_SIZE];
- memcpy(p, data->vreal32, VN_B_TILE_SIZE * VN_B_TILE_SIZE * sizeof(real32));
- }
- break;
- case VN_B_LAYER_REAL64 :
- {
- real64 *p;
- p = &((real64 *)node->layers[layer_id].layer)[(tile[0] * tile[1] * tile_z + tile_y * tile[0] + tile_x) * VN_B_TILE_SIZE * VN_B_TILE_SIZE];
- memcpy(p, data->vreal64, VN_B_TILE_SIZE * VN_B_TILE_SIZE * sizeof(real64));
- }
- break;
- }
- count = vs_get_subscript_count(node->layers[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layers[layer_id].subscribers, i);
- verse_send_b_tile_set(node_id, layer_id, tile_x, tile_y, tile_z, type, data);
- }
- vs_reset_subscript_session();
-}
-
-void vs_b_callback_init(void)
-{
- verse_callback_set(verse_send_b_dimensions_set, callback_send_b_dimensions_set, NULL);
- verse_callback_set(verse_send_b_layer_create, callback_send_b_layer_create, NULL);
- verse_callback_set(verse_send_b_layer_destroy, callback_send_b_layer_destroy, NULL);
- verse_callback_set(verse_send_b_layer_subscribe, callback_send_b_layer_subscribe, NULL);
- verse_callback_set(verse_send_b_layer_unsubscribe, callback_send_b_layer_unsubscribe, NULL);
- verse_callback_set(verse_send_b_tile_set, callback_send_b_tile_set, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_curve.c b/extern/verse/dist/vs_node_curve.c
deleted file mode 100644
index 3787526202d..00000000000
--- a/extern/verse/dist/vs_node_curve.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-typedef struct {
- real64 pre_value[4];
- uint32 pre_pos[4];
- real64 value[4];
- real64 pos;
- real64 post_value[4];
- uint32 post_pos[4];
-} VSNKey;
-
-typedef struct {
- VSNKey *keys;
- unsigned int length;
- char name[16];
- uint8 dimensions;
- VSSubscriptionList *subscribers;
-} VSNCurve;
-
-typedef struct{
- VSNodeHead head;
- VSNCurve *curves;
- unsigned int curve_count;
-} VSNodeCurve;
-
-VSNodeCurve * vs_c_create_node(unsigned int owner)
-{
- VSNodeCurve *node;
- char name[48];
- unsigned int i;
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_CURVE);
- sprintf(name, "Curve_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
- node->curves = malloc((sizeof *node->curves) * 16);
- node->curve_count = 16;
- for(i = 0; i < 16; i++)
- node->curves[i].name[0] = 0;
- return node;
-}
-
-void vs_c_destroy_node(VSNodeCurve *node)
-{
- destroy_node_head(&node->head);
- free(node);
-}
-
-void vs_c_subscribe(VSNodeCurve *node)
-{
- unsigned int i;
- if(node == NULL)
- return;
- for(i = 0; i < node->curve_count; i++)
- if(node->curves[i].name[0] != 0)
- verse_send_c_curve_create(node->head.id, i, node->curves[i].name, node->curves[i].dimensions);
-
-}
-
-void vs_c_unsubscribe(VSNodeCurve *node)
-{
- unsigned int i;
- for(i = 0; i < node->curve_count; i++)
- if(node->curves[i].name[0] != 0)
- vs_remove_subscriptor(node->curves[i].subscribers);
-}
-
-static void callback_send_c_curve_create(void *user, VNodeID node_id, VLayerID curve_id, const char *name, uint8 dimensions)
-{
- VSNodeCurve *node;
- unsigned int i, j, count;
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL)
- return;
-
- for(i = 0; i < node->curve_count; i++)
- {
- if(curve_id != i)
- {
- for(j = 0; name[j] == node->curves[i].name[j] && name[j] != 0; j++);
- if(name[j] == node->curves[i].name[j])
- return;
- }
- }
- if(curve_id >= node->curve_count || node->curves[curve_id].name[0] == 0)
- {
- for(curve_id = 0; curve_id < node->curve_count && node->curves[curve_id].name[0] != 0; curve_id++);
- if(curve_id == node->curve_count)
- {
- curve_id = node->curve_count;
- node->curve_count += 16;
- node->curves = realloc(node->curves, (sizeof *node->curves) * node->curve_count);
- for(i = curve_id; i < node->curve_count; i++)
- node->curves[i].name[0] = 0;
- }
- node->curves[curve_id].subscribers = vs_create_subscription_list();
- node->curves[curve_id].length = 64;
- node->curves[curve_id].keys = malloc((sizeof *node->curves[curve_id].keys) * 64);
- for(i = 0; i < 64; i++)
- node->curves[curve_id].keys[i].pos = V_REAL64_MAX;
-
- }else if(node->curves[curve_id].dimensions != dimensions)
- {
- for(i = 0; i < node->curves[curve_id].length; i++)
- {
- if(node->curves[curve_id].keys[i].pos != V_REAL64_MAX)
- {
- for(j = node->curves[curve_id].dimensions; j < dimensions; j++)
- {
- node->curves[curve_id].keys[i].pre_value[j] = node->curves[curve_id].keys[i].pre_value[0];
- node->curves[curve_id].keys[i].pre_pos[j] = node->curves[curve_id].keys[i].pre_pos[0];
- node->curves[curve_id].keys[i].value[j] = node->curves[curve_id].keys[i].value[0];
- node->curves[curve_id].keys[i].post_value[j] = node->curves[curve_id].keys[i].post_value[0];
- node->curves[curve_id].keys[i].post_pos[j] = node->curves[curve_id].keys[i].post_pos[0];
- }
- }
- }
- vs_destroy_subscription_list(node->curves[curve_id].subscribers);
- node->curves[curve_id].subscribers = vs_create_subscription_list();
- }
- for(i = 0; name[i] != 0 && i < 15; i++)
- node->curves[curve_id].name[i] = name[i];
- node->curves[curve_id].name[i] = 0;
- node->curves[curve_id].dimensions = dimensions;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_c_curve_create(node_id, curve_id, name, dimensions);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_c_curve_destroy(void *user, VNodeID node_id, VLayerID curve_id)
-{
- VSNodeCurve *node;
- unsigned int i, count;
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL || node->curve_count >= curve_id || node->curves[curve_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->curves[curve_id].subscribers);
- node->curves[curve_id].name[0] = 0;
- free(node->curves[curve_id].keys);
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_c_curve_destroy(node_id, curve_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_c_key_set(void *user, VNodeID node_id, VLayerID curve_id, uint32 key_id, uint8 dimensions, real64 *pre_value, uint32 *pre_pos, real64 *value, real64 pos, real64 *post_value, uint32 *post_pos)
-{
- VSNodeCurve *node;
- unsigned int i, count;
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL)
- return;
- if(node->curve_count <= curve_id)
- return;
- if(node->curves[curve_id].name[0] == 0)
- return;
- if(node == NULL || node->curve_count <= curve_id || node->curves[curve_id].name[0] == 0 || node->curves[curve_id].dimensions != dimensions)
- return;
- if(node->curves[curve_id].length <= key_id || node->curves[curve_id].keys[key_id].pos == V_REAL64_MAX)
- {
- for(key_id = 0; key_id < node->curves[curve_id].length && node->curves[curve_id].keys[key_id].pos != V_REAL64_MAX; key_id++);
- if(key_id == node->curves[curve_id].length)
- for(i = 0; i < 64; i++)
- node->curves[curve_id].keys[node->curves[curve_id].length++].pos = V_REAL64_MAX;
- }
- for(i = 0; i < dimensions; i++)
- node->curves[curve_id].keys[key_id].pre_value[i] = pre_value[i];
- for(i = 0; i < dimensions; i++)
- node->curves[curve_id].keys[key_id].pre_pos[i] = pre_pos[i];
- for(i = 0; i < dimensions; i++)
- node->curves[curve_id].keys[key_id].value[i] = value[i];
- node->curves[curve_id].keys[key_id].pos = pos;
- for(i = 0; i < dimensions; i++)
- node->curves[curve_id].keys[key_id].post_value[i] = post_value[i];
- for(i = 0; i < dimensions; i++)
- node->curves[curve_id].keys[key_id].post_pos[i] = post_pos[i];
- count = vs_get_subscript_count(node->curves[curve_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->curves[curve_id].subscribers, i);
- verse_send_c_key_set(node_id, curve_id, key_id, dimensions, pre_value, pre_pos, value, pos, post_value, post_pos);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_c_key_destroy(void *user, VNodeID node_id, VLayerID curve_id, uint32 key_id)
-{
- VSNodeCurve *node;
- unsigned int i, count;
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL || node->curve_count <= curve_id || node->curves[curve_id].name[0] == 0)
- return;
- if(node->curves[curve_id].length <= key_id || node->curves[curve_id].keys[key_id].pos == V_REAL64_MAX)
- return;
- node->curves[curve_id].keys[key_id].pos = V_REAL64_MAX;
- count = vs_get_subscript_count(node->curves[curve_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->curves[curve_id].subscribers, i);
- verse_send_c_key_destroy(node_id, curve_id, key_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_c_curve_subscribe(void *user, VNodeID node_id, VLayerID curve_id)
-{
- VSNodeCurve *node;
- unsigned int i;
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL || node->curve_count <= curve_id || node->curves[curve_id].name[0] == 0)
- return;
-
- vs_add_new_subscriptor(node->curves[curve_id].subscribers);
-
- for(i = 0; i < node->curves[curve_id].length; i++)
- if(node->curves[curve_id].keys[i].pos != V_REAL64_MAX)
- verse_send_c_key_set(node_id, curve_id, i, node->curves[curve_id].dimensions, node->curves[curve_id].keys[i].pre_value, node->curves[curve_id].keys[i].pre_pos, node->curves[curve_id].keys[i].value, node->curves[curve_id].keys[i].pos, node->curves[curve_id].keys[i].post_value, node->curves[curve_id].keys[i].post_pos);
-}
-
-static void callback_send_c_curve_unsubscribe(void *user, VNodeID node_id, VLayerID curve_id)
-{
- VSNodeCurve *node;
-
- node = (VSNodeCurve *)vs_get_node(node_id, V_NT_CURVE);
- if(node == NULL || curve_id >= node->curve_count || node->curves[curve_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->curves[curve_id].subscribers);
-}
-
-void vs_c_callback_init(void)
-{
- verse_callback_set(verse_send_c_curve_create, callback_send_c_curve_create, NULL);
- verse_callback_set(verse_send_c_curve_destroy, callback_send_c_curve_destroy, NULL);
- verse_callback_set(verse_send_c_curve_subscribe, callback_send_c_curve_subscribe, NULL);
- verse_callback_set(verse_send_c_curve_unsubscribe, callback_send_c_curve_unsubscribe, NULL);
- verse_callback_set(verse_send_c_key_set, callback_send_c_key_set, NULL);
- verse_callback_set(verse_send_c_key_destroy, callback_send_c_key_destroy, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_geometry.c b/extern/verse/dist/vs_node_geometry.c
deleted file mode 100644
index 4b1f88c8ac2..00000000000
--- a/extern/verse/dist/vs_node_geometry.c
+++ /dev/null
@@ -1,1047 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "v_util.h"
-#include "vs_server.h"
-
-#define VS_G_LAYER_CHUNK 32
-
-typedef struct {
- VNGLayerType type;
- char name[16];
- void *layer;
- VSSubscriptionList *subscribers;
- VSSubscriptionList *subscribersd;
- union{
- uint32 integer;
- real64 real;
- } def;
-} VSNGLayer;
-
-typedef struct {
- char weight[16];
- char reference[16];
- uint16 parent;
- real64 pos_x;
- real64 pos_y;
- real64 pos_z;
- char position_label[16];
- char rotation_label[16];
- char scale_label[16];
-} VSNGBone;
-
-typedef struct {
- VSNodeHead head;
- VSNGLayer *layer;
- uint16 layer_count;
- uint32 vertex_size;
- uint32 poly_size;
- uint32 vertex_hole;
- uint32 polygon_hole;
- uint32 crease_vertex;
- char crease_vertex_layer[16];
- uint32 crease_edge;
- char crease_edge_layer[16];
- VSNGBone *bones;
- uint32 bone_count;
-} VSNodeGeometry;
-
-VSNodeGeometry * vs_g_create_node(unsigned int owner)
-{
- VSNodeGeometry *node;
- unsigned int i;
- char name[48];
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_GEOMETRY);
- sprintf(name, "Geometry_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
-
- node->bones = malloc((sizeof *node->bones) * 16);
- node->bone_count = 16;
- for(i = 0; i < node->bone_count; i++)
- node->bones[i].weight[0] = '\0';
-
- node->layer = malloc((sizeof *node->layer) * 16);
- node->layer_count = 16;
- node->vertex_size = VS_G_LAYER_CHUNK;
- node->poly_size = VS_G_LAYER_CHUNK;
-
- strcpy(node->layer[0].name, "vertex");
- node->layer[0].type = VN_G_LAYER_VERTEX_XYZ;
- node->layer[0].layer = malloc(sizeof(real64) * VS_G_LAYER_CHUNK * 3);
- for(i = 0; i < VS_G_LAYER_CHUNK * 3; i++)
- ((real64 *)node->layer[0].layer)[i] = V_REAL64_MAX;
- node->layer[0].subscribers = NULL;/*vs_create_subscription_list();*/
- node->layer[0].subscribersd = NULL;/*vs_create_subscription_list();*/
- node->layer[0].def.real = 0;
-
- strcpy(node->layer[1].name, "polygon");
- node->layer[1].type = VN_G_LAYER_POLYGON_CORNER_UINT32;
- node->layer[1].layer = malloc(sizeof(uint32) * VS_G_LAYER_CHUNK * 4);
- for(i = 0; i < VS_G_LAYER_CHUNK * 4; i++)
- ((uint32 *)node->layer[1].layer)[i] = -1;
- node->layer[1].subscribers = NULL;/*vs_create_subscription_list();*/
- node->layer[1].subscribersd = NULL;
- node->layer[1].def.integer = 0;
- node->layer[1].def.real = 0.0;
-
- for(i = 2; i < 16; i++)
- {
- node->layer[i].type = -1;
- node->layer[i].name[0] = 0;
- node->layer[i].layer = NULL;
- node->layer[i].subscribers = NULL;
- node->layer[i].subscribersd = NULL;
- node->layer[i].def.real = 0;
- }
- node->crease_vertex = 0;
- node->crease_vertex_layer[0] = 0;
- node->crease_edge = 0;
- node->crease_edge_layer[0] = 0;
- node->vertex_hole = 0;
- node->polygon_hole = 0;
- return node;
-}
-
-void vs_g_destroy_node(VSNodeGeometry *node)
-{
- destroy_node_head(&node->head);
- free(node);
-}
-
-void vs_g_subscribe(VSNodeGeometry *node)
-{
- unsigned int i;
- for(i = 0; i < node->layer_count; i++)
- {
- if(node->layer[i].layer != NULL)
- {
- verse_send_g_layer_create(node->head.id, (uint16)i, node->layer[i].name, node->layer[i].type,
- node->layer[i].def.integer, node->layer[i].def.real);
- }
- }
- verse_send_g_crease_set_vertex(node->head.id, node->crease_vertex_layer, node->crease_vertex);
- verse_send_g_crease_set_edge(node->head.id, node->crease_edge_layer, node->crease_edge);
- for(i = 0; i < node->bone_count; i++)
- {
- if(node->bones[i].weight[0] != 0)
- verse_send_g_bone_create(node->head.id, (uint16)i, node->bones[i].weight, node->bones[i].reference, node->bones[i].parent,
- node->bones[i].pos_x, node->bones[i].pos_y, node->bones[i].pos_z, node->bones[i].position_label,
- node->bones[i].rotation_label, node->bones[i].scale_label);
- }
-}
-
-
-void vs_g_unsubscribe(VSNodeGeometry *node)
-{
- unsigned int i;
- for(i = 0; i < node->layer_count; i++) {
- if(node->layer[i].layer != NULL) {
- if(node->layer[i].subscribers)
- vs_remove_subscriptor(node->layer[i].subscribers);
- if(node->layer[i].subscribersd)
- vs_remove_subscriptor(node->layer[i].subscribersd);
- }
- }
-}
-
-static void callback_send_g_layer_create(void *user, VNodeID node_id, VLayerID layer_id, char *name, uint8 type, uint32 def_uint, real64 def_real)
-{
- VSNodeGeometry *node;
- unsigned int i, j, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
-
- if(node == NULL)
- return;
- if((type < VN_G_LAYER_POLYGON_CORNER_UINT32 && type > VN_G_LAYER_VERTEX_REAL) ||
- (type > VN_G_LAYER_POLYGON_FACE_REAL))
- return;
-
- if(layer_id < 2)
- layer_id = -1;
- for(i = 0; i < node->layer_count; i++)
- {
- if(node->layer[i].layer != NULL && i != layer_id)
- {
- for(j = 0; name[j] == node->layer[i].name[j] && name[j] != 0; j++);
- if(name[j] == node->layer[i].name[j])
- return;
- }
- }
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL)
- {
- for(layer_id = 0; layer_id < node->layer_count && node->layer[layer_id].layer != NULL; layer_id++);
- if(layer_id == node->layer_count)
- {
- layer_id = node->layer_count;
- node->layer_count += 16;
- node->layer = realloc(node->layer, (sizeof *node->layer) * node->layer_count);
- for(i = layer_id; i < node->layer_count; i++)
- {
- node->layer[i].type = -1;
- node->layer[i].name[0] = 0;
- node->layer[i].layer = 0;
- node->layer[i].subscribers = NULL;
- node->layer[i].subscribersd = NULL;
- }
- }
- }
- for(i = 0; i < 16; i++)
- node->layer[layer_id].name[i] = name[i];
-
- if(node->layer[layer_id].type != type)
- {
- if(node->layer[layer_id].subscribers) {
- vs_destroy_subscription_list(node->layer[layer_id].subscribers);
- node->layer[layer_id].subscribers = NULL;
- }
- if(node->layer[layer_id].subscribersd) {
- vs_destroy_subscription_list(node->layer[layer_id].subscribersd);
- node->layer[layer_id].subscribersd = NULL;
- }
- node->layer[layer_id].type = type;
- free(node->layer[layer_id].layer);
- switch(type)
- {
- case VN_G_LAYER_VERTEX_XYZ :
- node->layer[layer_id].layer = malloc(sizeof(real64) * node->vertex_size * 3);
- for(i = 0; i < node->vertex_size * 3; i++)
- ((real64 *)node->layer[layer_id].layer)[i] = ((real64 *)node->layer[0].layer)[i];
- break;
- case VN_G_LAYER_VERTEX_UINT32 :
- node->layer[layer_id].layer = malloc(sizeof(uint32) * node->vertex_size);
- for(i = 0; i < node->vertex_size; i++)
- ((uint32 *)node->layer[layer_id].layer)[i] = def_uint;
- node->layer[layer_id].def.integer = def_uint;
- break;
- case VN_G_LAYER_VERTEX_REAL :
- node->layer[layer_id].layer = malloc(sizeof(real64) * node->vertex_size);
- for(i = 0; i < node->vertex_size; i++)
- ((real64 *)node->layer[layer_id].layer)[i] = def_real;
- node->layer[layer_id].def.real = def_real;
- break;
- case VN_G_LAYER_POLYGON_CORNER_UINT32 :
- node->layer[layer_id].layer = malloc(sizeof(uint32) * node->poly_size * 4);
- for(i = 0; i < node->poly_size * 4; i++)
- ((uint32 *)node->layer[layer_id].layer)[i] = def_uint;
- node->layer[layer_id].def.integer = def_uint;
- break;
- case VN_G_LAYER_POLYGON_CORNER_REAL :
- node->layer[layer_id].layer = malloc(sizeof(real64) * node->poly_size * 4);
- for(i = 0; i < node->poly_size * 4; i++)
- ((real64 *)node->layer[layer_id].layer)[i] = def_real;
- node->layer[layer_id].def.real = def_real;
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT8 :
- node->layer[layer_id].layer = malloc(sizeof(uint8) * node->poly_size);
- for(i = 0; i < node->poly_size; i++)
- ((uint8 *)node->layer[layer_id].layer)[i] = def_uint;
- node->layer[layer_id].def.integer = def_uint;
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT32 :
- node->layer[layer_id].layer = malloc(sizeof(uint32) * node->poly_size);
- for(i = 0; i < node->poly_size; i++)
- ((uint32 *)node->layer[layer_id].layer)[i] = def_uint;
- node->layer[layer_id].def.integer = def_uint;
- break;
- case VN_G_LAYER_POLYGON_FACE_REAL :
- node->layer[layer_id].layer = malloc(sizeof(real64) * node->poly_size);
- for(i = 0; i < node->poly_size; i++)
- ((real64 *)node->layer[layer_id].layer)[i] = def_real;
- node->layer[layer_id].def.real = def_real;
- break;
- }
- }
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_layer_create(node_id, layer_id, name, type, def_uint, def_real);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_layer_destroy(void *user, VNodeID node_id, VLayerID layer_id)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || layer_id < 2)
- return;
- free(node->layer[layer_id].layer);
- node->layer[layer_id].layer = NULL;
- node->layer[layer_id].name[0] = 0;
- node->layer[layer_id].type = -1;
- if(node->layer[layer_id].subscribers) {
- vs_destroy_subscription_list(node->layer[layer_id].subscribers);
- node->layer[layer_id].subscribers = NULL;
- }
- if(node->layer[layer_id].subscribersd) {
- vs_destroy_subscription_list(node->layer[layer_id].subscribersd);
- node->layer[layer_id].subscribersd = NULL;
- }
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_layer_destroy(node_id, layer_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_layer_subscribe(void *user, VNodeID node_id, VLayerID layer_id, uint8 type)
-{
- VSNodeGeometry *node;
- VSNGLayer *layer;
- VSSubscriptionList **list = NULL;
- unsigned int i;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
-
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL)
- return;
- /* Pick subscription list to add subscriber to. */
- layer = &node->layer[layer_id];
- if(type == VN_FORMAT_REAL64 && (layer->type == VN_G_LAYER_VERTEX_XYZ || layer->type == VN_G_LAYER_VERTEX_REAL ||
- layer->type == VN_G_LAYER_POLYGON_CORNER_REAL || layer->type == VN_G_LAYER_POLYGON_FACE_REAL))
- {
- list = &node->layer[layer_id].subscribersd;
- }
- else
- list = &node->layer[layer_id].subscribers;
-
- /* Add new subscriptor to whichever list was chosen by precision-test above. Create list if necessary. */
- if(list == NULL)
- return;
- if(*list == NULL)
- *list = vs_create_subscription_list();
- vs_add_new_subscriptor(*list);
-
- switch(layer->type)
- {
- case VN_G_LAYER_VERTEX_XYZ :
- if(type == VN_FORMAT_REAL64)
- {
- for(i = 0; i < node->vertex_size; i++)
- if(((real64 *)node->layer[0].layer)[i * 3] != V_REAL64_MAX)
- verse_send_g_vertex_set_xyz_real64(node_id, layer_id, i, ((real64 *)layer->layer)[i * 3], ((real64 *)layer->layer)[i * 3 + 1], ((real64 *)layer->layer)[i * 3 + 2]);
- }else
- {
- for(i = 0; i < node->vertex_size; i++)
- if(((real64 *)node->layer[0].layer)[i * 3] != V_REAL64_MAX)
- verse_send_g_vertex_set_xyz_real32(node_id, layer_id, i, (float)((real64 *)layer->layer)[i * 3], (float)((real64 *)layer->layer)[i * 3 + 1], (float)((real64 *)layer->layer)[i * 3 + 2]);
- }
- break;
- case VN_G_LAYER_VERTEX_UINT32 :
- for(i = 0; i < node->vertex_size; i++)
- if(((real64 *)node->layer[0].layer)[i * 3] != V_REAL64_MAX && ((uint32 *)layer->layer)[i] != layer->def.integer)
- verse_send_g_vertex_set_uint32(node_id, layer_id, i, ((uint32 *)layer->layer)[i]);
- break;
- case VN_G_LAYER_VERTEX_REAL :
- if(type == VN_FORMAT_REAL64)
- {
- for(i = 0; i < node->vertex_size; i++)
- if(((real64 *)node->layer[0].layer)[i * 3] != V_REAL64_MAX && ((real64 *)layer->layer)[i] != layer->def.real)
- verse_send_g_vertex_set_real64(node_id, layer_id, i, ((real64 *)layer->layer)[i]);
- }else
- {
- for(i = 0; i < node->vertex_size; i++)
- if(((real64 *)node->layer[0].layer)[i * 3] != V_REAL64_MAX && ((real64 *)layer->layer)[i] != layer->def.real)
- verse_send_g_vertex_set_real32(node_id, layer_id, i, (float)((real64 *)layer->layer)[i]);
- }
- break;
- case VN_G_LAYER_POLYGON_CORNER_UINT32 :
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && !(((uint32 *)layer->layer)[i * 4] == layer->def.integer && ((uint32 *)layer->layer)[i * 4 + 1] == layer->def.integer && ((uint32 *)layer->layer)[i * 4 + 2] == layer->def.integer && ((uint32 *)layer->layer)[i * 4 + 3] == layer->def.integer))
- verse_send_g_polygon_set_corner_uint32(node_id, layer_id, i, ((uint32 *)layer->layer)[i * 4], ((uint32 *)layer->layer)[i * 4 + 1], ((uint32 *)layer->layer)[i * 4 + 2], ((uint32 *)layer->layer)[i * 4 + 3]);
- break;
- case VN_G_LAYER_POLYGON_CORNER_REAL :
- if(type == VN_FORMAT_REAL64)
- {
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && !(((real64 *)layer->layer)[i * 4] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 1] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 2] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 3] == layer->def.real))
- verse_send_g_polygon_set_corner_real64(node_id, layer_id, i, ((real64 *)layer->layer)[i * 4], ((real64 *)layer->layer)[i * 4 + 1], ((real64 *)layer->layer)[i * 4 + 2], ((real64 *)layer->layer)[i * 4 + 3]);
- }else
- {
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && !(((real64 *)layer->layer)[i * 4] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 1] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 2] == layer->def.real && ((real64 *)layer->layer)[i * 4 + 3] == layer->def.real))
- verse_send_g_polygon_set_corner_real32(node_id, layer_id, i, (float)((real64 *)layer->layer)[i * 4], (float)((real64 *)layer->layer)[i * 4 + 1], (float)((real64 *)layer->layer)[i * 4 + 2], (float)((real64 *)layer->layer)[i * 4 + 3]);
- }
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT8 :
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && ((uint8 *)layer->layer)[i] != layer->def.integer)
- verse_send_g_polygon_set_face_uint8(node_id, layer_id, i, ((uint8 *)layer->layer)[i]);
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT32 :
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && ((uint32 *)layer->layer)[i] != layer->def.integer)
- verse_send_g_polygon_set_face_uint32(node_id, layer_id, i, ((uint32 *)layer->layer)[i]);
- break;
- case VN_G_LAYER_POLYGON_FACE_REAL :
- if(type == VN_FORMAT_REAL64)
- {
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && ((real64 *)layer->layer)[i] != layer->def.real)
- verse_send_g_polygon_set_face_real64(node_id, layer_id, i, ((real64 *)layer->layer)[i]);
- }else
- {
- for(i = 0; i < node->poly_size; i++)
- if(((uint32 *)node->layer[1].layer)[i * 4] != (uint32) ~0u && ((real64 *)layer->layer)[i] != layer->def.real)
- verse_send_g_polygon_set_face_real32(node_id, layer_id, i, (float)((real64 *)layer->layer)[i]);
- }
- break;
- }
-}
-
-static void callback_send_g_layer_unsubscribe(void *user, VNodeID node_id, VLayerID layer_id)
-{
- VSNodeGeometry *node;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL)
- return;
- if(node->layer[layer_id].subscribers)
- vs_remove_subscriptor(node->layer[layer_id].subscribers);
- if(node->layer[layer_id].subscribersd)
- vs_remove_subscriptor(node->layer[layer_id].subscribersd);
-}
-
-
-static unsigned int vs_g_extend_arrays(VSNodeGeometry *node, boolean vertex, boolean base_layer, unsigned int id)
-{
- unsigned int i, j;
-
- if(base_layer && id == ~0u)
- {
- if(vertex)
- {
- while(node->vertex_hole < node->vertex_size && ((real64 *)node->layer[0].layer)[node->vertex_hole * 3] != V_REAL64_MAX)
- node->vertex_hole++;
- id = node->vertex_hole;
- }else
- {
- while(node->polygon_hole < node->poly_size && ((uint32 *)node->layer[1].layer)[node->polygon_hole * 4] != ~0u)
- node->polygon_hole++;
- id = node->polygon_hole;
- }
- }
-
- if(vertex)
- {
- if(node->vertex_size + 4096 < id)
- return -1;
- if(node->vertex_size > id)
- return id;
- }else
- {
- if(node->poly_size + 4096 < id)
- return -1;
- if(node->poly_size > id)
- return id;
- }
-
- for(i = 0; i < node->layer_count; i++)
- {
- if((vertex && node->layer[i].type < VN_G_LAYER_POLYGON_CORNER_UINT32) || (!vertex && node->layer[i].type >= VN_G_LAYER_POLYGON_CORNER_UINT32))
- {
- switch(node->layer[i].type)
- {
- case VN_G_LAYER_VERTEX_XYZ :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(real64) * (id + VS_G_LAYER_CHUNK) * 3);
- for(j = node->vertex_size * 3; j < (id + VS_G_LAYER_CHUNK) * 3; j++)
- ((real64 *)node->layer[i].layer)[j] = V_REAL64_MAX;
- break;
- case VN_G_LAYER_VERTEX_UINT32 :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(uint32) * (id + VS_G_LAYER_CHUNK));
- for(j = node->vertex_size; j < (id + VS_G_LAYER_CHUNK); j++)
- ((uint32 *)node->layer[i].layer)[j] = node->layer[i].def.integer;
- break;
- case VN_G_LAYER_VERTEX_REAL :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(real64) * (id + VS_G_LAYER_CHUNK));
- for(j = node->vertex_size; j < (id + VS_G_LAYER_CHUNK); j++)
- ((real64 *)node->layer[i].layer)[j] = node->layer[i].def.real;
- break;
- case VN_G_LAYER_POLYGON_CORNER_UINT32 :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(uint32) * (id + VS_G_LAYER_CHUNK) * 4);
- for(j = node->poly_size * 4; j < (id + VS_G_LAYER_CHUNK) * 4; j++)
- ((uint32 *)node->layer[i].layer)[j] = node->layer[i].def.integer;
- break;
- case VN_G_LAYER_POLYGON_CORNER_REAL :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(real64) * (id + VS_G_LAYER_CHUNK) * 4);
- for(j = node->poly_size * 4; j < (id + VS_G_LAYER_CHUNK) * 4; j++)
- ((real64 *)node->layer[i].layer)[j] = node->layer[i].def.real;
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT8 :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(uint8) * (id + VS_G_LAYER_CHUNK));
- for(j = node->poly_size; j < (id + VS_G_LAYER_CHUNK); j++)
- ((uint8 *)node->layer[i].layer)[j] = node->layer[i].def.integer;
- break;
- case VN_G_LAYER_POLYGON_FACE_UINT32 :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(uint32) * (id + VS_G_LAYER_CHUNK));
- for(j = node->poly_size; j < (id + VS_G_LAYER_CHUNK); j++)
- ((uint32 *)node->layer[i].layer)[j] = node->layer[i].def.integer;
- break;
- case VN_G_LAYER_POLYGON_FACE_REAL :
- node->layer[i].layer = realloc(node->layer[i].layer, sizeof(real64) * (id + VS_G_LAYER_CHUNK));
- for(j = node->poly_size; j < (id + VS_G_LAYER_CHUNK); j++)
- ((real64 *)node->layer[i].layer)[j] = node->layer[i].def.real;
- break;
- }
- }
- }
- if(vertex)
- node->vertex_size = id + VS_G_LAYER_CHUNK;
- else
- node->poly_size = id + VS_G_LAYER_CHUNK;
- return id;
-}
-
-
-static void callback_send_g_vertex_set_xyz_real32(void *user, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, float x, float y, float z)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_VERTEX_XYZ)
- return;
- if((vertex_id = vs_g_extend_arrays(node, TRUE, layer_id == 0, vertex_id)) == ~0u)
- return;
- if(((real64 *)node->layer[0].layer)[vertex_id * 3] == V_REAL64_MAX)
- {
- for(i = 0; i < node->layer_count; i++)
- {
- if(node->layer[i].name[0] != 0 && node->layer[i].type == VN_G_LAYER_VERTEX_XYZ && node->layer[i].layer != NULL)
- {
- ((real64 *)node->layer[i].layer)[vertex_id * 3] = x;
- ((real64 *)node->layer[i].layer)[vertex_id * 3 + 1] = y;
- ((real64 *)node->layer[i].layer)[vertex_id * 3 + 2] = z;
- }
- }
- layer_id = 0;
- }else
- {
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3] = x;
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3 + 1] = y;
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3 + 2] = z;
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_vertex_set_xyz_real64(node_id, layer_id, vertex_id, (real64)x, (real64)y, (real64)z);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_vertex_set_xyz_real32(node_id, layer_id, vertex_id, x, y, z);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_vertex_set_xyz_real64(void *user, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 x, real64 y, real64 z)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_VERTEX_XYZ)
- return;
- if((vertex_id = vs_g_extend_arrays(node, TRUE, layer_id == 0, vertex_id)) == ~0u)
- return;
- if(((real64 *)node->layer[0].layer)[vertex_id * 3] == V_REAL64_MAX)
- {
- for(i = 0; i < node->layer_count; i++)
- {
- if(node->layer[i].name[0] != 0 && node->layer[i].type == VN_G_LAYER_VERTEX_XYZ && node->layer[i].layer != NULL)
- {
- ((real64 *)node->layer[i].layer)[vertex_id * 3] = x;
- ((real64 *)node->layer[i].layer)[vertex_id * 3 + 1] = y;
- ((real64 *)node->layer[i].layer)[vertex_id * 3 + 2] = z;
- }
- }
- layer_id = 0;
- }else
- {
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3] = x;
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3 + 1] = y;
- ((real64 *)node->layer[layer_id].layer)[vertex_id * 3 + 2] = z;
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_vertex_set_xyz_real64(node_id, layer_id, vertex_id, x, y, z);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_vertex_set_xyz_real32(node_id, layer_id, vertex_id, (float)x, (float)y, (float)z);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_vertex_delete_real(void *user, VNodeID node_id, uint32 vertex_id)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(vertex_id >= node->vertex_size)
- return;
- if(vertex_id < node->vertex_hole)
- node->vertex_hole = vertex_id;
- for(i = 0; i < node->layer_count; i++)
- if(node->layer[i].name[0] != 0 && node->layer[i].type == VN_G_LAYER_VERTEX_XYZ && node->layer[i].layer != NULL)
- ((real64 *)node->layer[i].layer)[vertex_id * 3] = V_REAL64_MAX;
- count = vs_get_subscript_count(node->layer[0].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[0].subscribers, i);
- verse_send_g_vertex_delete_real32(node_id, vertex_id);
- }
- count = vs_get_subscript_count(node->layer[0].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[0].subscribersd, i);
- verse_send_g_vertex_delete_real64(node_id, vertex_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_vertex_set_uint32(void *user, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, uint32 value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_VERTEX_UINT32)
- return;
- if((vertex_id = vs_g_extend_arrays(node, TRUE, FALSE, vertex_id)) == ~0u)
- return;
- ((uint32 *)node->layer[layer_id].layer)[vertex_id] = value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_vertex_set_uint32(node_id, layer_id, vertex_id, value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_vertex_set_real64(void *user, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_VERTEX_REAL)
- return;
- if((vertex_id = vs_g_extend_arrays(node, TRUE, FALSE, vertex_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[vertex_id] = value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_vertex_set_real32(node_id, layer_id, vertex_id, (float)value);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_vertex_set_real64(node_id, layer_id, vertex_id, value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_vertex_set_real32(void *user, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, float value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_VERTEX_REAL)
- return;
- if((vertex_id = vs_g_extend_arrays(node, TRUE, FALSE, vertex_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[vertex_id] = (real64)value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_vertex_set_real32(node_id, layer_id, vertex_id, value);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_vertex_set_real64(node_id, layer_id, vertex_id, (real64)value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_corner_uint32(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_CORNER_UINT32)
- return;
- if(layer_id == 1 && (v0 == v1 || v1 == v2 || v2 == v3 || v3 == v0 || v0 == v2 || v1 == v3))
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, layer_id == 1, polygon_id)) == ~0u)
- return;
- ((uint32 *)node->layer[layer_id].layer)[polygon_id * 4] = v0;
- ((uint32 *)node->layer[layer_id].layer)[polygon_id * 4 + 1] = v1;
- ((uint32 *)node->layer[layer_id].layer)[polygon_id * 4 + 2] = v2;
- ((uint32 *)node->layer[layer_id].layer)[polygon_id * 4 + 3] = v3;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_corner_uint32(node_id, layer_id, polygon_id, v0, v1, v2, v3);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_corner_real64(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 v0, real64 v1, real64 v2, real64 v3)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_CORNER_REAL)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4] = v0;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 1] = v1;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 2] = v2;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 3] = v3;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_corner_real32(node_id, layer_id, polygon_id, (float)v0, (float)v1, (float)v2, (float)v3);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_polygon_set_corner_real64(node_id, layer_id, polygon_id, v0, v1, v2, v3);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_corner_real32(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, float v0, float v1, float v2, float v3)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_CORNER_REAL)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4] = v0;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 1] = v1;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 2] = v2;
- ((real64 *)node->layer[layer_id].layer)[polygon_id * 4 + 3] = v3;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_corner_real32(node_id, layer_id, polygon_id, v0, v1, v2, v3);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_polygon_set_corner_real64(node_id, layer_id, polygon_id, (real64)v0, (real64)v1, (real64)v2, (real64)v3);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_face_uint8(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint8 value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_FACE_UINT8)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((uint8 *)node->layer[layer_id].layer)[polygon_id] = value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_face_uint8(node_id, layer_id, polygon_id, value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_face_uint32(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_FACE_UINT32)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((uint32 *)node->layer[layer_id].layer)[polygon_id] = value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_face_uint32(node_id, layer_id, polygon_id, value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_face_real64(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_FACE_REAL)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[polygon_id] = value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_face_real32(node_id, layer_id, polygon_id, (float)value);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_polygon_set_face_real64(node_id, layer_id, polygon_id, value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_set_face_real32(void *user, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, float value)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(layer_id >= node->layer_count || node->layer[layer_id].layer == NULL || node->layer[layer_id].type != VN_G_LAYER_POLYGON_FACE_REAL)
- return;
- if((polygon_id = vs_g_extend_arrays(node, FALSE, FALSE, polygon_id)) == ~0u)
- return;
- ((real64 *)node->layer[layer_id].layer)[polygon_id] = (real64)value;
- count = vs_get_subscript_count(node->layer[layer_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribers, i);
- verse_send_g_polygon_set_face_real32(node_id, layer_id, polygon_id, value);
- }
- count = vs_get_subscript_count(node->layer[layer_id].subscribersd);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[layer_id].subscribersd, i);
- verse_send_g_polygon_set_face_real64(node_id, layer_id, polygon_id, (real64)value);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_polygon_delete(void *user, VNodeID node_id, uint32 polygon_id)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
-
- if(polygon_id >= node->poly_size || ((uint32 *)node->layer[1].layer)[polygon_id * 4] == ~0u)
- return;
- if(polygon_id < node->polygon_hole)
- node->polygon_hole = polygon_id;
-
- ((uint32 *)node->layer[1].layer)[polygon_id * 4] = ~0u;
- count = vs_get_subscript_count(node->layer[1].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->layer[1].subscribers, i);
- verse_send_g_polygon_delete(node_id, polygon_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_crease_set_vertex(void *user, VNodeID node_id, const char *layer, uint32 def_crease)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- node->crease_vertex = def_crease;
- v_strlcpy(node->crease_vertex_layer, layer, sizeof node->crease_vertex_layer);
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_crease_set_vertex(node_id, layer, def_crease);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_g_crease_set_edge(void *user, VNodeID node_id, const char *layer, uint32 def_crease)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- node->crease_edge = def_crease;
- v_strlcpy(node->crease_edge_layer, layer, sizeof node->crease_edge_layer);
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_crease_set_edge(node_id, layer, def_crease);
- }
- vs_reset_subscript_session();
-}
-
-void callback_send_g_bone_create(void *user, VNodeID node_id, uint16 bone_id, const char *weight,
- const char *reference, uint16 parent,
- real64 pos_x, real64 pos_y, real64 pos_z,
- const char *position_label, const char *rotation_label, const char *scale_label)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
-
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(bone_id >= node->bone_count || node->bones[bone_id].weight[0] == '\0')
- {
- /* Find free bone to re-use, if any. */
- for(bone_id = 0; bone_id < node->bone_count && node->bones[bone_id].weight[0] != '\0'; bone_id++)
- ;
- if(bone_id == node->bone_count)
- {
- bone_id = node->bone_count;
- node->bone_count += 16;
- node->bones = realloc(node->bones, (sizeof *node->bones) * node->bone_count);
- for(i = bone_id; i < node->bone_count; i++)
- node->bones[i].weight[0] = '\0';
- }
- }
- v_strlcpy(node->bones[bone_id].weight, weight, sizeof node->bones[bone_id].weight);
- v_strlcpy(node->bones[bone_id].reference, reference, sizeof node->bones[bone_id].reference);
- node->bones[bone_id].parent = parent;
- node->bones[bone_id].pos_x = pos_x;
- node->bones[bone_id].pos_y = pos_y;
- node->bones[bone_id].pos_z = pos_z;
- v_strlcpy(node->bones[bone_id].position_label, position_label, sizeof node->bones[bone_id].position_label);
- v_strlcpy(node->bones[bone_id].rotation_label, rotation_label, sizeof node->bones[bone_id].rotation_label);
- v_strlcpy(node->bones[bone_id].scale_label, scale_label, sizeof node->bones[bone_id].scale_label);
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_bone_create(node_id, bone_id, weight, reference, parent, pos_x, pos_y, pos_z, position_label, rotation_label, scale_label);
- }
- vs_reset_subscript_session();
-}
-
-void callback_send_g_bone_destroy(void *user, VNodeID node_id, uint32 bone_id)
-{
- VSNodeGeometry *node;
- unsigned int i, count;
- node = (VSNodeGeometry *)vs_get_node(node_id, V_NT_GEOMETRY);
- if(node == NULL)
- return;
- if(bone_id >= node->bone_count || node->bones[bone_id].weight[0] == 0)
- return;
- node->bones[bone_id].weight[0] = 0;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_g_bone_destroy(node_id, bone_id);
- }
- vs_reset_subscript_session();
-}
-
-void vs_g_callback_init(void)
-{
- verse_callback_set(verse_send_g_layer_create, callback_send_g_layer_create, NULL);
- verse_callback_set(verse_send_g_layer_destroy, callback_send_g_layer_destroy, NULL);
- verse_callback_set(verse_send_g_layer_subscribe, callback_send_g_layer_subscribe, NULL);
- verse_callback_set(verse_send_g_layer_unsubscribe, callback_send_g_layer_unsubscribe, NULL);
- verse_callback_set(verse_send_g_vertex_set_xyz_real32, callback_send_g_vertex_set_xyz_real32, NULL);
- verse_callback_set(verse_send_g_vertex_set_xyz_real64, callback_send_g_vertex_set_xyz_real64, NULL);
- verse_callback_set(verse_send_g_vertex_set_uint32, callback_send_g_vertex_set_uint32, NULL);
- verse_callback_set(verse_send_g_vertex_set_real32, callback_send_g_vertex_set_real32, NULL);
- verse_callback_set(verse_send_g_vertex_set_real64, callback_send_g_vertex_set_real64, NULL);
- verse_callback_set(verse_send_g_vertex_delete_real32, callback_send_g_vertex_delete_real, NULL);
- verse_callback_set(verse_send_g_vertex_delete_real64, callback_send_g_vertex_delete_real, NULL);
- verse_callback_set(verse_send_g_polygon_set_corner_uint32, callback_send_g_polygon_set_corner_uint32, NULL);
- verse_callback_set(verse_send_g_polygon_set_corner_real32, callback_send_g_polygon_set_corner_real32, NULL);
- verse_callback_set(verse_send_g_polygon_set_corner_real64, callback_send_g_polygon_set_corner_real64, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_uint8, callback_send_g_polygon_set_face_uint8, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_uint32, callback_send_g_polygon_set_face_uint32, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_real32, callback_send_g_polygon_set_face_real32, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_real64, callback_send_g_polygon_set_face_real64, NULL);
- verse_callback_set(verse_send_g_polygon_delete, callback_send_g_polygon_delete, NULL);
- verse_callback_set(verse_send_g_crease_set_vertex, callback_send_g_crease_set_vertex, NULL);
- verse_callback_set(verse_send_g_crease_set_edge, callback_send_g_crease_set_edge, NULL);
- verse_callback_set(verse_send_g_bone_create, callback_send_g_bone_create, NULL);
- verse_callback_set(verse_send_g_bone_destroy, callback_send_g_bone_destroy, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_head.c b/extern/verse/dist/vs_node_head.c
deleted file mode 100644
index 9e926411542..00000000000
--- a/extern/verse/dist/vs_node_head.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined(V_GENERATE_FUNC_MODE)
-
-#include "verse.h"
-#include "v_util.h"
-#include "vs_server.h"
-
-typedef struct {
- VNTag tag;
- VNTagType type;
- char tag_name[16];
-} VSTag;
-
-typedef struct {
- VSTag *tags;
- unsigned int tag_count;
- char group_name[16];
- VSSubscriptionList *subscribers;
-} VSTagGroup;
-
-void create_node_head(VSNodeHead *node, const char *name, unsigned int owner)
-{
- size_t len;
-
- len = strlen(name) + 1;
- node->name = malloc(len);
- v_strlcpy(node->name, name, len);
- node->owner = owner;
- node->tag_groups = NULL;
- node->group_count = 0;
- node->subscribers = vs_create_subscription_list();
-}
-
-void destroy_node_head(VSNodeHead *node)
-{
- unsigned int i, j;
- if(node->name != NULL)
- free(node->name);
- if(node->tag_groups != NULL)
- {
- for(i = 0; i < node->group_count; i++)
- {
- for(j = 0; j < ((VSTagGroup *)node->tag_groups)[i].tag_count; j++)
- {
- if(((VSTagGroup *)node->tag_groups)[i].tags[j].type == VN_TAG_STRING)
- free(((VSTagGroup *)node->tag_groups)[i].tags[j].tag.vstring);
- if(((VSTagGroup *)node->tag_groups)[i].tags[j].type == VN_TAG_BLOB)
- free(((VSTagGroup *)node->tag_groups)[i].tags[j].tag.vblob.blob);
- }
- if(((VSTagGroup *)node->tag_groups)[i].tags != NULL)
- free(((VSTagGroup *)node->tag_groups)[i].tags);
- }
- if(node->tag_groups != NULL)
- free(node->tag_groups);
- }
-}
-
- void callback_send_tag_group_create(void *user, VNodeID node_id, uint16 group_id, const char *name)
-{
- VSNodeHead *node;
- unsigned int count, i, j, element;
-
- if((node = vs_get_node_head(node_id)) == 0)
- return;
- if(name[0] == 0)
- return;
-
- for(i = 0; i < node->group_count; i++) /* see if a tag group with this name alredy exists*/
- {
- if(((VSTagGroup *)node->tag_groups)[i].group_name[0] != 0)
- {
- for(j = 0; name[j] == ((VSTagGroup *)node->tag_groups)[i].group_name[j] && name[j] != 0; j++);
- if(name[j] == ((VSTagGroup *)node->tag_groups)[i].group_name[j])
- return;
- }
- }
- if(group_id < node->group_count && ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] != 0) /* rename existing group */
- {
- element = group_id;
- }else /* create new game group */
- {
- for(element = 0; element < node->group_count && ((VSTagGroup *)node->tag_groups)[element].group_name[0] != 0; element++);
- if(element == node->group_count)
- {
- node->tag_groups = realloc(node->tag_groups, sizeof(VSTagGroup) * (node->group_count + 16));
- for(i = node->group_count; i < node->group_count + 16U; i++)
- {
- ((VSTagGroup *)node->tag_groups)[i].group_name[0] = 0;
- ((VSTagGroup *)node->tag_groups)[i].tags = NULL;
- ((VSTagGroup *)node->tag_groups)[i].tag_count = 0;
- ((VSTagGroup *)node->tag_groups)[i].subscribers = NULL;
- }
- node->group_count += 16;
- }
- ((VSTagGroup *)node->tag_groups)[element].subscribers = vs_create_subscription_list();
- }
- v_strlcpy(((VSTagGroup *)node->tag_groups)[element].group_name, name,
- sizeof ((VSTagGroup *)node->tag_groups)[element].group_name);
-
- count = vs_get_subscript_count(node->subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->subscribers, i);
- verse_send_tag_group_create(node_id, element, name);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_tag_group_destroy(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeHead *node;
- unsigned int count, i;
- if((node = vs_get_node_head(node_id)) == 0)
- return;
-
- if(node->group_count <= group_id || ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] == 0)
- return;
-
- vs_destroy_subscription_list(((VSTagGroup *)node->tag_groups)[group_id].subscribers);
- for(i = 0; i < ((VSTagGroup *)node->tag_groups)[group_id].tag_count; i++)
- {
- if(((VSTagGroup *)node->tag_groups)[group_id].tags[i].type == VN_TAG_STRING)
- free(((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag.vstring);
- if(((VSTagGroup *)node->tag_groups)[group_id].tags[i].type == VN_TAG_BLOB)
- free(((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag.vblob.blob);
- }
- if(((VSTagGroup *)node->tag_groups)[group_id].tags != NULL)
- free(((VSTagGroup *)node->tag_groups)[group_id].tags);
- ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] = 0;
- ((VSTagGroup *)node->tag_groups)[group_id].tags = NULL;
- ((VSTagGroup *)node->tag_groups)[group_id].tag_count = 0;
-
- count = vs_get_subscript_count(node->subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->subscribers, i);
- verse_send_tag_group_destroy(node_id, group_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_tag_group_subscribe(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeHead *node;
- unsigned int i;
- if((node = vs_get_node_head(node_id)) == 0)
- return;
-
- if(group_id < node->group_count && ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] != 0)
- {
- vs_add_new_subscriptor(((VSTagGroup *)node->tag_groups)[group_id].subscribers);
- for(i = 0; i < ((VSTagGroup *)node->tag_groups)[group_id].tag_count; i++)
- {
- if(((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name[0] != 0)
- {
- verse_send_tag_create(node_id, group_id, (uint16)i, ((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name, ((VSTagGroup *)node->tag_groups)[group_id].tags[i].type, &((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag);
- }
- }
- }
-}
-
-static void callback_send_tag_group_unsubscribe(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeHead *node;
- if((node = vs_get_node_head(node_id)) == 0)
- return;
- if(group_id < node->group_count && ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] != 0)
- vs_remove_subscriptor(((VSTagGroup *)node->tag_groups)[group_id].subscribers);
-}
-
-static void callback_send_tag_create(void *user, VNodeID node_id, uint16 group_id, uint16 tag_id, char *name, uint8 type, void *tag)
-{
- VSNodeHead *node;
- VSTag *t = NULL;
- unsigned int i, count;
-
- if((node = vs_get_node_head(node_id)) == 0)
- return;
- if(group_id >= node->group_count || ((VSTagGroup *)node->tag_groups)[group_id].group_name[0] == 0)
- return;
-
-/* for(i = 0; i < ((VSTagGroup *)node->tag_groups)[group_id].tag_count; i++)
- {
- if(((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name != NULL && i != tag_id)
- {
- for(j = 0; name[j] == ((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name[j] && name[j] != 0; j++);
- if(name[j] == ((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name[j])
- return;
- }
- }*/
- if(tag_id < ((VSTagGroup *)node->tag_groups)[group_id].tag_count && ((VSTagGroup *)node->tag_groups)[group_id].tags[tag_id].tag_name[0] != 0)
- ;
- else
- {
- for(tag_id = 0; tag_id < ((VSTagGroup *)node->tag_groups)[group_id].tag_count && ((VSTagGroup *)node->tag_groups)[group_id].tags[tag_id].tag_name[0] != 0; tag_id++)
- ;
- if(tag_id == ((VSTagGroup *)node->tag_groups)[group_id].tag_count)
- {
- ((VSTagGroup *)node->tag_groups)[group_id].tags = realloc(((VSTagGroup *)node->tag_groups)[group_id].tags, sizeof(VSTag) * (((VSTagGroup *)node->tag_groups)[group_id].tag_count + 16));
- for(i = tag_id; i < ((VSTagGroup *)node->tag_groups)[group_id].tag_count + 16; i++)
- ((VSTagGroup *)node->tag_groups)[group_id].tags[i].tag_name[0] = 0;
- ((VSTagGroup *)node->tag_groups)[group_id].tag_count += 16;
- }
- }
- t = &((VSTagGroup *)node->tag_groups)[group_id].tags[tag_id];
- if(t->tag_name[0] != '\0') /* Old tag being re-set? */
- {
- if(t->type == VN_TAG_STRING)
- free(t->tag.vstring);
- else if(t->type == VN_TAG_BLOB)
- free(t->tag.vblob.blob);
- }
- t->type = type;
- v_strlcpy(t->tag_name, name, sizeof t->tag_name);
- switch(type)
- {
- case VN_TAG_BOOLEAN :
- t->tag.vboolean = ((VNTag *)tag)->vboolean;
- break;
- case VN_TAG_UINT32 :
- t->tag.vuint32 = ((VNTag *)tag)->vuint32;
- break;
- case VN_TAG_REAL64 :
- t->tag.vreal64 = ((VNTag *)tag)->vreal64;
- break;
- case VN_TAG_STRING :
- i = strlen(((VNTag *) tag)->vstring);
- t->tag.vstring = malloc(i + 1);
- strcpy(t->tag.vstring, ((VNTag *) tag)->vstring);
- break;
- case VN_TAG_REAL64_VEC3 :
- t->tag.vreal64_vec3[0] = ((VNTag *)tag)->vreal64_vec3[0];
- t->tag.vreal64_vec3[1] = ((VNTag *)tag)->vreal64_vec3[1];
- t->tag.vreal64_vec3[2] = ((VNTag *)tag)->vreal64_vec3[2];
- break;
- case VN_TAG_LINK :
- t->tag.vlink = ((VNTag *)tag)->vlink;
- break;
- case VN_TAG_ANIMATION :
- t->tag.vanimation.curve = ((VNTag *)tag)->vanimation.curve;
- t->tag.vanimation.start = ((VNTag *)tag)->vanimation.start;
- t->tag.vanimation.end = ((VNTag *)tag)->vanimation.end;
- break;
- case VN_TAG_BLOB :
- t->tag.vblob.blob = malloc(((VNTag *)tag)->vblob.size);
- t->tag.vblob.size = ((VNTag *)tag)->vblob.size;
- memcpy(t->tag.vblob.blob, ((VNTag *)tag)->vblob.blob, ((VNTag *)tag)->vblob.size);
- break;
- }
-
- count = vs_get_subscript_count(((VSTagGroup *) node->tag_groups)[group_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(((VSTagGroup *) node->tag_groups)[group_id].subscribers, i);
- verse_send_tag_create(node_id, group_id, tag_id, name, type, tag);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_tag_destroy(void *user, VNodeID node_id, uint16 group_id, uint16 tag_id)
-{
- VSNodeHead *node;
- unsigned int count, i;
- if((node = vs_get_node_head(node_id)) == 0)
- return;
-
- count = vs_get_subscript_count(((VSTagGroup *) node->tag_groups)[group_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(((VSTagGroup *) node->tag_groups)[group_id].subscribers, i);
- verse_send_tag_destroy(node_id, group_id, tag_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_node_name_set(void *user, VNodeID node_id, char *name)
-{
- VSNodeHead *node;
- unsigned int count, i;
- size_t len;
-
- if((node = vs_get_node_head(node_id)) == 0)
- return;
- len = strlen(name);
- if(len == 0)
- return;
- free(node->name);
- len++;
- node->name = malloc(len);
- v_strlcpy(node->name, name, len);
- count = vs_get_subscript_count(node->subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->subscribers, i);
- verse_send_node_name_set(node_id, name);
- }
- vs_reset_subscript_session();
-}
-
-extern void vs_o_subscribe(VSNodeHead *node);
-extern void vs_g_subscribe(VSNodeHead *node);
-extern void vs_m_subscribe(VSNodeHead *node);
-extern void vs_b_subscribe(VSNodeHead *node);
-extern void vs_t_subscribe(VSNodeHead *node);
-extern void vs_c_subscribe(VSNodeHead *node);
-extern void vs_a_subscribe(VSNodeHead *node);
-
-static void callback_send_node_subscribe(void *user, VNodeID node_id)
-{
- unsigned int i;
- VSNodeHead *node;
-
- if((node = vs_get_node_head(node_id)) == NULL)
- return;
- switch(node->type)
- {
- case V_NT_OBJECT :
- vs_o_subscribe(node);
- break;
- case V_NT_GEOMETRY :
- vs_g_subscribe(node);
- break;
- case V_NT_MATERIAL :
- vs_m_subscribe(node);
- break;
- case V_NT_BITMAP :
- vs_b_subscribe(node);
- break;
- case V_NT_TEXT:
- vs_t_subscribe(node);
- break;
- case V_NT_CURVE:
- vs_c_subscribe(node);
- break;
- case V_NT_AUDIO:
- vs_a_subscribe(node);
- break;
- default:
- fprintf(stderr, "Not subscribing to node type %d\n", node->type);
- }
- verse_send_node_name_set(node->id, node->name);
- for(i = 0; i < node->group_count; i++)
- if(((VSTagGroup *)node->tag_groups)[i].group_name[0] != 0)
- verse_send_tag_group_create(node->id, (uint16)i, ((VSTagGroup *)node->tag_groups)[i].group_name);
- vs_add_new_subscriptor(node->subscribers);
-}
-
-extern void vs_o_unsubscribe(VSNodeHead *node);
-extern void vs_g_unsubscribe(VSNodeHead *node);
-extern void vs_m_unsubscribe(VSNodeHead *node);
-extern void vs_b_unsubscribe(VSNodeHead *node);
-extern void vs_t_unsubscribe(VSNodeHead *node);
-extern void vs_c_unsubscribe(VSNodeHead *node);
-extern void vs_a_unsubscribe(VSNodeHead *node);
-
-static void callback_send_node_unsubscribe(void *user, VNodeID node_id)
-{
- VSNodeHead *node;
-
- if((node = vs_get_node_head(node_id)) == NULL)
- return;
- vs_remove_subscriptor(node->subscribers);
-
- switch(node->type)
- {
- case V_NT_OBJECT :
- vs_o_unsubscribe(node);
- break;
- case V_NT_GEOMETRY :
- vs_g_unsubscribe(node);
- break;
- case V_NT_MATERIAL :
- vs_m_unsubscribe(node);
- break;
- case V_NT_BITMAP :
- vs_b_unsubscribe(node);
- break;
- case V_NT_TEXT:
- vs_t_unsubscribe(node);
- break;
- case V_NT_CURVE:
- vs_c_unsubscribe(node);
- break;
- case V_NT_AUDIO:
- vs_a_unsubscribe(node);
- break;
- default:
- fprintf(stderr, "Not unsubscribing from node type %d\n", node->type);
- }
-}
-
-void vs_h_callback_init(void)
-{
- verse_callback_set(verse_send_tag_group_create, callback_send_tag_group_create, NULL);
- verse_callback_set(verse_send_tag_group_destroy, callback_send_tag_group_destroy, NULL);
- verse_callback_set(verse_send_tag_group_subscribe, callback_send_tag_group_subscribe, NULL);
- verse_callback_set(verse_send_tag_group_unsubscribe, callback_send_tag_group_unsubscribe, NULL);
- verse_callback_set(verse_send_tag_create, callback_send_tag_create, NULL);
- verse_callback_set(verse_send_tag_destroy, callback_send_tag_destroy, NULL);
- verse_callback_set(verse_send_node_name_set, callback_send_node_name_set, NULL);
- verse_callback_set(verse_send_node_subscribe, callback_send_node_subscribe, NULL);
- verse_callback_set(verse_send_node_unsubscribe, callback_send_node_unsubscribe, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_material.c b/extern/verse/dist/vs_node_material.c
deleted file mode 100644
index b22c070e348..00000000000
--- a/extern/verse/dist/vs_node_material.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-typedef struct {
- VNMFragmentType type;
- VMatFrag frag;
-} VSMatFrag;
-
-typedef struct{
- VSNodeHead head;
- VSMatFrag *frag;
- unsigned int frag_count;
-} VSNodeMaterial;
-
-VSNodeMaterial * vs_m_create_node(unsigned int owner)
-{
- VSNodeMaterial *node;
- char name[48];
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_MATERIAL);
- sprintf(name, "Material_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
- node->frag = NULL;
- node->frag_count = 0;
- return node;
-}
-
-void vs_m_destroy_node(VSNodeMaterial *node)
-{
- destroy_node_head(&node->head);
- free(node->frag);
- free(node);
-}
-
-void vs_m_subscribe(VSNodeMaterial *node)
-{
- uint16 i;
- for(i = 0; i < node->frag_count; i++)
- if(node->frag[i].type <= VN_M_FT_OUTPUT)
- verse_send_m_fragment_create(node->head.id, (uint16)i, (uint8)node->frag[i].type, &node->frag[i].frag);
-}
-
-void vs_m_unsubscribe(VSNodeMaterial *node)
-{
-}
-
-static void callback_send_m_fragment_create(void *user, VNodeID node_id, VNMFragmentID frag_id, uint8 type, VMatFrag *fragment)
-{
- unsigned int count;
- uint16 i;
- VSNodeMaterial *node;
- node = (VSNodeMaterial *)vs_get_node(node_id, V_NT_MATERIAL);
- if(node == NULL)
- return;
- if(node->frag_count + 32 < frag_id)
- frag_id = (uint16)-1;
- if(frag_id == (uint16) ~0u)
- for(frag_id = 0; frag_id < node->frag_count && node->frag[frag_id].type < VN_M_FT_OUTPUT + 1; frag_id++)
- ;
- if(frag_id >= node->frag_count)
- {
- node->frag = realloc(node->frag, (sizeof *node->frag) * (node->frag_count + 32));
- for(i = node->frag_count; i < (node->frag_count + 32); i++)
- node->frag[i].type = 255;
- node->frag_count += 32;
- }
- node->frag[frag_id].type = type;
- node->frag[frag_id].frag = *fragment;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_m_fragment_create(node_id, frag_id, type, fragment);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_m_fragment_destroy(void *user, VNodeID node_id, VNMFragmentID frag_id)
-{
- unsigned int count, i;
- VSNodeMaterial *node;
- node = (VSNodeMaterial *)vs_get_node(node_id, V_NT_MATERIAL);
- printf("callback_send_m_fragment_destroy %p\n", node);
- if(node == NULL)
- return;
- if(node->frag_count <= frag_id || node->frag[frag_id].type > VN_M_FT_OUTPUT)
- return;
- node->frag[frag_id].type = 255;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_m_fragment_destroy(node_id, frag_id);
- }
- vs_reset_subscript_session();
-}
-
-void vs_m_callback_init(void)
-{
- verse_callback_set(verse_send_m_fragment_create, callback_send_m_fragment_create, NULL);
- verse_callback_set(verse_send_m_fragment_destroy, callback_send_m_fragment_destroy, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_object.c b/extern/verse/dist/vs_node_object.c
deleted file mode 100644
index d269a8ddb99..00000000000
--- a/extern/verse/dist/vs_node_object.c
+++ /dev/null
@@ -1,837 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "v_util.h"
-#include "vs_server.h"
-
-extern void verse_send_o_link_set(VNodeID node_id, uint16 link_id, VNodeID link, const char *name, uint32 target_id);
-extern void verse_send_o_link_destroy(VNodeID node_id, uint16 link_id);
-
-typedef struct {
- VNodeID link;
- char name[16];
- uint32 target_id;
- /* Animation parameters. */
- uint32 time_s;
- uint32 time_f;
- uint32 dimensions;
- real64 pos[4];
- real64 speed[4];
- real64 accel[4];
- real64 scale[4];
- real64 scale_speed[4];
-} VSLink;
-
-typedef struct {
- char name[16];
- uint8 param_count;
- VNOParamType *param_types;
- char *param_names;
-} VSMethod;
-
-typedef struct {
- char name[VN_O_METHOD_GROUP_NAME_SIZE];
- VSMethod *methods;
- unsigned int method_count;
- VSSubscriptionList *subscribers;
-} VSMethodGroup;
-
-typedef struct {
- real64 position[3];
- VNQuat64 rotation;
- real64 scale[3];
-/* VSSubscriptionList *subscribers;*/
-} VSTransform;
-
-typedef struct {
- VSNodeHead head;
- VSTransform transform;
- VSSubscriptionList *trans_sub64;
- VSSubscriptionList *trans_sub32;
- real64 light[3];
- VSMethodGroup *groups;
- uint16 group_count;
- VSLink *links;
- uint16 link_count;
- boolean hidden;
-} VSNodeObject;
-
-VSNodeObject * vs_o_create_node(unsigned int owner)
-{
- VSNodeObject *node;
- unsigned int i, j;
- char name[48];
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_OBJECT);
- sprintf(name, "Object_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
- node->trans_sub64 = vs_create_subscription_list();
- node->trans_sub32 = vs_create_subscription_list();
- node->transform.position[0] = node->transform.position[1] = node->transform.position[2] = 0;
- node->transform.rotation.x = node->transform.rotation.y = node->transform.rotation.z = 0.0;
- node->transform.rotation.w = 1.0;
- node->transform.scale[0] = node->transform.scale[1] = node->transform.scale[2] = 1.0;
- node->light[0] = node->light[1] = node->light[2] = V_REAL64_MAX;
- node->groups = malloc((sizeof *node->groups) * 16);
- node->group_count = 16;
- for(i = 0; i < 16; i++)
- {
- node->groups[i].name[0] = 0;
- node->groups[i].methods = NULL;
- node->groups[i].method_count = 0;
- node->groups[i].subscribers = NULL;
- }
-
- node->link_count = 16;
- node->links = malloc((sizeof *node->links) * node->link_count);
- for(i = 0; i < node->link_count; i++)
- {
- node->links[i].link = -1;
- node->links[i].name[0] = 0;
- node->links[i].target_id = -1;
- node->links[i].dimensions = 0;
- for(j = 0; j < 4; j++)
- {
- node->links[i].pos[j] = 0.0;
- node->links[i].speed[j] = 0.0;
- node->links[i].accel[j] = 0.0;
- node->links[i].scale[j] = 0.0;
- node->links[i].scale_speed[j] = 0.0;
- }
- }
- node->hidden = FALSE;
- return node;
-}
-
-void vs_o_destroy_node(VSNodeObject *node)
-{
- unsigned int i, j;
- destroy_node_head(&node->head);
- for(i = 0; i < node->group_count; i++)
- {
- if(node->groups[i].name[0] != 0)
- {
- for(j = 0; j < node->groups[i].method_count; j++)
- {
- if(node->groups[i].methods[j].name[0] != 0 && node->groups[i].methods[j].param_count != 0)
- {
- free(node->groups[i].methods[j].param_types);
- free(node->groups[i].methods[j].param_names);
- }
- }
- if(node->groups[i].methods != NULL)
- free(node->groups[i].methods);
- }
- }
- free(node->groups);
- free(node);
-}
-
-void vs_o_subscribe(VSNodeObject *node)
-{
- unsigned int i;
- for(i = 0; i < node->link_count; i++)
- {
- const VSLink *lnk = node->links + i;
-
- if(lnk->name[0] != 0)
- {
- verse_send_o_link_set(node->head.id, i, lnk->link, lnk->name, lnk->target_id);
- if(lnk->dimensions != 0)
- {
- verse_send_o_anim_run(node->head.id, i, lnk->time_s, lnk->time_f, lnk->dimensions,
- lnk->pos, lnk->speed, lnk->accel,
- lnk->scale, lnk->scale_speed);
- }
- }
- }
- if(node->light[0] != V_REAL64_MAX || node->light[1] != V_REAL64_MAX || node->light[2] != V_REAL64_MAX)
- verse_send_o_light_set(node->head.id, node->light[0], node->light[1], node->light[2]);
- for(i = 0; i < node->group_count; i++)
- {
- if(node->groups[i].name[0] != 0)
- verse_send_o_method_group_create(node->head.id, i, node->groups[i].name);
- }
- if(node->hidden)
- verse_send_o_hide(node->head.id, TRUE);
-}
-
-void vs_o_unsubscribe(VSNodeObject *node)
-{
- unsigned int i;
- for(i = 0; i < node->group_count; i++)
- if(node->groups[i].name[0] != 0)
- vs_remove_subscriptor(node->groups[i].subscribers);
- vs_remove_subscriptor(node->trans_sub64);
- vs_remove_subscriptor(node->trans_sub32);
-}
-
-static void callback_send_o_transform_pos_real32(void *user, VNodeID node_id, uint32 time_s, uint32 time_f, real32 *pos, real32 *speed, real32 *accelerate, real32 *drag_normal, real32 drag)
-{
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.position[0] = pos[0];
- node->transform.position[1] = pos[1];
- node->transform.position[2] = pos[2];
-
- if((count = vs_get_subscript_count(node->trans_sub64)) > 0) /* Anyone listening at 64 bits? */
- {
- real64 spd[3], acc[3], drn[3], *pspd = NULL, *pacc = NULL, *pdrn = NULL;
-
- pspd = (speed != NULL) ? spd : NULL;
- pacc = (accelerate != NULL) ? acc : NULL;
- pdrn = (drag_normal != NULL) ? drn : NULL;
- /* Convert non-position values to 64-bit. */
- for(i = 0; i < 3; i++)
- {
- if(speed != NULL)
- spd[i] = speed[i];
- if(accelerate != NULL)
- acc[i] = accelerate[i];
- if(drag_normal != NULL)
- drn[i] = drag_normal[i];
- }
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_pos_real64(node_id, time_s, time_f, node->transform.position, pspd, pacc, pdrn, drag);
- }
- }
- count = vs_get_subscript_count(node->trans_sub32);
- for(i = 0; i < count; i++)
- {
-
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_pos_real32(node_id, time_s, time_f, pos, speed, accelerate, drag_normal, drag);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_transform_rot_real32(void *user, VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *rot,
- const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.rotation.x = rot->x;
- node->transform.rotation.y = rot->y;
- node->transform.rotation.z = rot->z;
- node->transform.rotation.w = rot->w;
- if((count = vs_get_subscript_count(node->trans_sub64)) > 0)
- {
- VNQuat64 spd, acc, drn, *p[3];
-
- /* Convert 32-bit quaternions to 64-bit. Converter handles NULLs, has nice return semantics. */
- p[0] = v_quat64_from_quat32(&spd, speed);
- p[1] = v_quat64_from_quat32(&acc, accelerate);
- p[2] = v_quat64_from_quat32(&drn, drag_normal);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_rot_real64(node_id, time_s, time_f, &node->transform.rotation, p[0], p[1], p[2], drag);
- }
- }
- count = vs_get_subscript_count(node->trans_sub32);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_rot_real32(node_id, time_s, time_f, rot, speed, accelerate, drag_normal, drag);
- }
- vs_reset_subscript_session();
-}
-
-
-static void callback_send_o_transform_scale_real32(void *user, VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.scale[0] = scale_x;
- node->transform.scale[1] = scale_y;
- node->transform.scale[2] = scale_z;
- count = vs_get_subscript_count(node->trans_sub64);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_scale_real64(node_id, scale_x, scale_y, scale_z);
- }
- count = vs_get_subscript_count(node->trans_sub32);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_scale_real32(node_id, scale_x, scale_y, scale_z);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_transform_pos_real64(void *user, VNodeID node_id, uint32 time_s, uint32 time_f, const real64 *pos,
- const real64 *speed, const real64 *accelerate, const real64 *drag_normal, real64 drag)
-{
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.position[0] = pos[0];
- node->transform.position[1] = pos[1];
- node->transform.position[2] = pos[2];
- count = vs_get_subscript_count(node->trans_sub64);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_pos_real64(node_id, time_s, time_f, node->transform.position, speed, accelerate, drag_normal, drag);
- }
- if((count = vs_get_subscript_count(node->trans_sub32)) > 0) /* Anyone listening at 32 bits? */
- {
- real32 ps[3], spd[3], acc[3], drn[3], *p[] = { NULL, NULL, NULL };
-
- ps[0] = pos[0];
- ps[1] = pos[1];
- ps[2] = pos[2];
- if(speed != NULL)
- {
- p[0] = spd;
- spd[0] = speed[0];
- spd[1] = speed[1];
- spd[2] = speed[2];
- }
- else
- p[0] = NULL;
- if(accelerate != NULL)
- {
- p[1] = acc;
- acc[0] = accelerate[0];
- acc[1] = accelerate[1];
- acc[2] = accelerate[2];
- }
- else
- p[1] = NULL;
- if(drag_normal != NULL)
- {
- p[1] = drn;
- drn[0] = drag_normal[0];
- drn[1] = drag_normal[1];
- drn[2] = drag_normal[2];
- }
- else
- p[2] = NULL;
-
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_pos_real32(node_id, time_s, time_f, ps, p[0], p[1], p[2], (real32) drag);
- }
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_transform_rot_real64(void *user, VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat64 *rot,
- const VNQuat64 *speed, const VNQuat64 *accelerate, const VNQuat64 *drag_normal, real64 drag)
-{
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.rotation = *rot;
- count = vs_get_subscript_count(node->trans_sub64);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_rot_real64(node_id, time_s, time_f, &node->transform.rotation, speed, accelerate, drag_normal, drag);
- }
- if((count = vs_get_subscript_count(node->trans_sub32)) > 0) /* Anyone listening at 32 bits? */
- {
- VNQuat32 rt, spd, acc, drn, *p[3];
-
- v_quat32_from_quat64(&rt, rot);
- p[0] = v_quat32_from_quat64(&spd, speed);
- p[1] = v_quat32_from_quat64(&acc, accelerate);
- p[2] = v_quat32_from_quat64(&drn, drag_normal);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_rot_real32(node_id, time_s, time_f, &rt, p[0], p[1], p[2], (real32) drag);
- }
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_transform_scale_real64(void *user, VNodeID node_id, real64 scale_x, real64 scale_y, real64 scale_z)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->transform.scale[0] = scale_x;
- node->transform.scale[1] = scale_y;
- node->transform.scale[2] = scale_z;
- count = vs_get_subscript_count(node->trans_sub64);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub64, i);
- verse_send_o_transform_scale_real64(node_id, scale_x, scale_y, scale_z);
- }
- count = vs_get_subscript_count(node->trans_sub32);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->trans_sub32, i);
- verse_send_o_transform_scale_real32(node_id, (real32) scale_x, (real32) scale_y, (real32) scale_z);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_transform_subscribe(void *user, VNodeID node_id, VNRealFormat type)
-{
- VSNodeObject *node;
- uint32 time_s, time_f;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- verse_session_get_time(&time_s, &time_f);
- if(type == VN_FORMAT_REAL32)
- {
- real32 tpos[3];
- VNQuat32 rot;
-
- vs_add_new_subscriptor(node->trans_sub32);
- tpos[0] = node->transform.position[0];
- tpos[1] = node->transform.position[1];
- tpos[2] = node->transform.position[2];
- verse_send_o_transform_pos_real32(node_id, time_s, time_f, tpos, NULL, NULL, NULL, 0.0f);
- v_quat32_from_quat64(&rot, &node->transform.rotation);
- verse_send_o_transform_rot_real32(node_id, time_s, time_f, &rot, NULL, NULL, NULL, 0.0f);
- verse_send_o_transform_scale_real32(node_id, (real32) node->transform.scale[0], (real32) node->transform.scale[1], (real32) node->transform.scale[2]);
- }
- else
- {
- vs_add_new_subscriptor(node->trans_sub64);
- verse_send_o_transform_pos_real64(node_id, time_s, time_f, node->transform.position, NULL, NULL, NULL, 0);
- verse_send_o_transform_rot_real64(node_id, time_s, time_f, &node->transform.rotation, NULL, NULL, NULL, 0);
- verse_send_o_transform_scale_real64(node_id, node->transform.scale[0], node->transform.scale[1], node->transform.scale[2]);
- }
-}
-
-static void callback_send_o_transform_unsubscribe(void *user, VNodeID node_id, VNRealFormat type)
-{
- VSNodeObject *node;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- if(type == VN_FORMAT_REAL32)
- vs_remove_subscriptor(node->trans_sub32);
- else
- vs_remove_subscriptor(node->trans_sub64);
-}
-
-static void callback_send_o_light_set(void *user, VNodeID node_id, real64 light_r, real64 light_g, real64 light_b)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- node->light[0] = light_r;
- node->light[1] = light_g;
- node->light[2] = light_b;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_light_set(node_id, light_r, light_g, light_b);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_link_set(void *user, VNodeID node_id, uint16 link_id, VNodeID link, const char *name, uint32 target_id)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
-
- if(node == NULL)
- return;
-
- if(name[0] == 0)
- return;
- if(vs_get_node_head(link) == 0)
- link = 0;
-
- if(link_id >= node->link_count || node->links[link_id].name[0] == 0)
- {
- for(link_id = 0; link_id < node->link_count && node->links[link_id].name[0] != 0; link_id++);
-
- if(link_id == node->link_count)
- {
- i = node->link_count;
- node->link_count += 16;
- node->links = realloc(node->links, (sizeof *node->links) * node->link_count);
- for(; i < node->link_count; i++)
- {
- node->links[i].name[0] = 0;
- node->links[i].dimensions = 0;
- }
- }
- }
-
- node->links[link_id].link = link;
- for(i = 0; i < 15 && name[i] != 0; i++)
- node->links[link_id].name[i] = name[i];
- node->links[link_id].name[i] = 0;
- node->links[link_id].target_id = target_id;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_link_set(node_id, link_id, link, name, target_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_link_destroy(void *user, VNodeID node_id, uint16 link_id)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
-
- if(link_id >= node->link_count || node->links[link_id].name[0] == 0)
- return;
-
- node->links[link_id].name[0] = 0;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_link_destroy(node_id, link_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_method_group_create(void *user, VNodeID node_id, uint16 group_id, char *name)
-{
- VSNodeObject *node;
- unsigned int i, j, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
-
- for(i = 0; i < node->group_count; i++)
- {
- for(j = 0; node->groups[i].name[j] == name[j] && node->groups[i].name[j] != 0; j++);
- if(node->groups[i].name[j] == name[j])
- return;
- }
- if(group_id >= node->group_count || node->groups[group_id].name[0] == 0)
- {
- for(group_id = 0; group_id < node->group_count && node->groups[group_id].name[0] != 0; group_id++)
- if(group_id == node->group_count)
- {
- node->groups = realloc(node->groups, sizeof(*node->groups) * (node->group_count + 16));
- for(i = node->group_count; i < node->group_count + 16u; i++)
- {
- node->groups[i].name[0] = 0;
- node->groups[i].methods = NULL;
- node->groups[i].method_count = 0;
- }
- node->group_count += 16;
- }
- node->groups[group_id].subscribers = vs_create_subscription_list();
- }
- for(i = 0; i < 15 && name[i] != 0; i++)
- node->groups[group_id].name[i] = name[i];
- node->groups[group_id].name[i] = 0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_method_group_create(node_id, group_id, name);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_method_group_destroy(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
-
- if(group_id >= node->group_count || node->groups[group_id].name[0] == 0)
- return;
- node->groups[group_id].name[0] = 0;
- for(i = 0; i < node->groups[group_id].method_count; i++)
- {
- if(node->groups[group_id].methods[i].name[0] != 0 && node->groups[group_id].methods[i].param_count > 0)
- {
- free(node->groups[group_id].methods[i].param_names);
- free(node->groups[group_id].methods[i].param_types);
- }
- }
- free(node->groups[group_id].methods);
- node->groups[group_id].methods = NULL;
- node->groups[group_id].method_count = 0;
- vs_destroy_subscription_list(node->groups[group_id].subscribers);
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_method_group_destroy(node_id, group_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_method_group_subscribe(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeObject *node;
- unsigned int i, j;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
- if(group_id < node->group_count && node->groups[group_id].name[0] != 0)
- vs_add_new_subscriptor(node->groups[group_id].subscribers);
- for(i = 0; i < node->groups[group_id].method_count; i++)
- {
- if(node->groups[group_id].methods[i].name[0] != 0)
- {
- char *names[255];
- for(j = 0; j < node->groups[group_id].methods[i].param_count; j++)
- names[j] = &node->groups[group_id].methods[i].param_names[j * 16];
- verse_send_o_method_create(node_id, group_id, i, node->groups[group_id].methods[i].name, node->groups[group_id].methods[i].param_count, node->groups[group_id].methods[i].param_types, (const char **) names);
- }
- }
-}
-
-static void callback_send_o_method_group_unsubscribe(void *user, VNodeID node_id, uint16 group_id)
-{
- VSNodeObject *node;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
- if(group_id < node->group_count && node->groups[group_id].name[0] != 0)
- vs_remove_subscriptor(node->groups[group_id].subscribers);
-}
-
-static void callback_send_o_method_create(void *user, VNodeID node_id, uint16 group_id, uint16 method_id, char *name, uint8 param_count, VNOParamType *param_types, char * *param_names)
-{
- VSNodeObject *node;
- unsigned int i, j, count;
- VSMethodGroup *group;
-
- node = (VSNodeObject *) vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
- if(group_id >= node->group_count || node->groups[group_id].name[0] == 0)
- return;
- group = &node->groups[group_id];
- for(i = 0; i < group->method_count; i++)
- {
- if(i != method_id)
- {
- for(j = 0; group->methods[i].name[j] == name[j] && group->methods[i].name[j] != 0; j++);
- if(group->methods[i].name[j] == name[j])
- return;
- }
- }
- if(method_id < group->method_count && group->methods[method_id].name[0] != 0)
- {
- for(i = 0; i < 16; i++)
- group->methods[method_id].name[i] = name[i];
- if(group->methods[method_id].param_count != 0)
- {
- free(group->methods[method_id].param_names);
- free(group->methods[method_id].param_types);
- }
- }else
- {
- for(method_id = 0; method_id < group->method_count && group->methods[method_id].name[0] != 0; method_id++);
- if(method_id == group->method_count)
- {
- group->methods = realloc(group->methods, sizeof(*group->methods) * (group->method_count + 16));
- for(i = group->method_count; i < group->method_count + 16; i++)
- group->methods[i].name[0] = 0;
- group->method_count += 16;
- }
- }
- for(i = 0; i < VN_O_METHOD_NAME_SIZE && name[i] != 0; i++)
- group->methods[method_id].name[i] = name[i];
- group->methods[method_id].name[i] = '\0';
- group->methods[method_id].param_count = param_count;
- if(param_count > 0)
- {
- group->methods[method_id].param_types = malloc((sizeof *group->methods[method_id].param_types) * param_count);
- group->methods[method_id].param_names = malloc((sizeof *group->methods[method_id].param_names) * param_count * 16);
- }
- for(i = 0; i < param_count; i++)
- {
- group->methods[method_id].param_types[i] = param_types[i];
- for(j = 0; j < 15 && param_names[i][j] != 0; j++)
- group->methods[method_id].param_names[i * 16 + j] = param_names[i][j];
- group->methods[method_id].param_names[i * 16 + j] = 0;
- }
- count = vs_get_subscript_count(node->groups[group_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->groups[group_id].subscribers, i);
- verse_send_o_method_create(node_id, group_id, method_id, name, param_count, param_types, (const char **) param_names);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_method_destroy(void *user, VNodeID node_id, uint16 group_id, uint16 method_id)
-{
- VSNodeObject *node;
- unsigned int i, count;
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
- if(group_id >= node->group_count || node->groups[group_id].name[0] == 0 || method_id >= node->groups[group_id].method_count || node->groups[group_id].methods[method_id].name[0] == 0)
- return;
-
- node->groups[group_id].methods[method_id].name[0] = 0;
- if(node->groups[group_id].methods[method_id].param_count != 0)
- {
- free(node->groups[group_id].methods[method_id].param_names);
- free(node->groups[group_id].methods[method_id].param_types);
- }
- count = vs_get_subscript_count(node->groups[group_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->groups[group_id].subscribers, i);
- verse_send_o_method_destroy(node_id, group_id, method_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_method_call(void *user, VNodeID node_id, uint16 group_id, uint16 method_id, VNodeID sender, void *params)
-{
- VNOParam unpacked_params[255];
- void *data;
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || vs_get_node(node_id, V_NT_OBJECT) == NULL)
- return;
-
- if(group_id >= node->group_count || node->groups[group_id].name[0] == 0 || method_id >= node->groups[group_id].method_count || node->groups[group_id].methods[method_id].name[0] == 0)
- return;
- if(!verse_method_call_unpack(params, node->groups[group_id].methods[method_id].param_count, node->groups[group_id].methods[method_id].param_types, unpacked_params))
- return;
- sender = vs_get_avatar();
- count = vs_get_subscript_count(node->groups[group_id].subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->groups[group_id].subscribers, i);
- data = verse_method_call_pack(node->groups[group_id].methods[method_id].param_count, node->groups[group_id].methods[method_id].param_types, unpacked_params);
- if(data != NULL)
- verse_send_o_method_call(node_id, group_id, method_id, sender, data);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_anim_run(void *user, VNodeID node_id, uint16 link_id, uint32 time_s, uint32 time_f, uint8 dimensions, real64 *pos,
- real64 *speed, real64 *accel, real64 *scale, real64 *scale_speed)
-{
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL)
- return;
- if(link_id >= node->link_count || node->links[link_id].name[0] == 0)
- return;
- if(NULL == vs_get_node(node->links[link_id].link, V_NT_CURVE))
- return;
- node->links[link_id].time_s = time_s;
- node->links[link_id].time_f = time_f;
- node->links[link_id].dimensions = dimensions;
- for(i = 0; i < dimensions && i < 4; i++)
- {
- node->links[link_id].pos[i] = pos[i];
- node->links[link_id].speed[i] = speed[i];
- node->links[link_id].accel[i] = accel[i];
- node->links[link_id].scale[i] = scale[i];
- node->links[link_id].scale_speed[i] = scale_speed[i];
- }
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_anim_run(node_id, link_id, time_s, time_f, dimensions, pos, speed, accel, scale, scale_speed);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_o_hide(void *user, VNodeID node_id, uint8 hidden)
-{
- VSNodeObject *node;
- unsigned int i, count;
-
- node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL || hidden == node->hidden)
- return;
- node->hidden = hidden;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_o_hide(node_id, hidden);
- }
- vs_reset_subscript_session();
-}
-
-void vs_o_callback_init(void)
-{
-
- verse_callback_set(verse_send_o_transform_pos_real32, callback_send_o_transform_pos_real32, NULL);
- verse_callback_set(verse_send_o_transform_rot_real32, callback_send_o_transform_rot_real32, NULL);
- verse_callback_set(verse_send_o_transform_scale_real32, callback_send_o_transform_scale_real32, NULL);
- verse_callback_set(verse_send_o_transform_pos_real64, callback_send_o_transform_pos_real64, NULL);
- verse_callback_set(verse_send_o_transform_rot_real64, callback_send_o_transform_rot_real64, NULL);
- verse_callback_set(verse_send_o_transform_scale_real64, callback_send_o_transform_scale_real64, NULL);
- verse_callback_set(verse_send_o_transform_subscribe, callback_send_o_transform_subscribe, NULL);
- verse_callback_set(verse_send_o_transform_unsubscribe, callback_send_o_transform_unsubscribe, NULL);
- verse_callback_set(verse_send_o_link_set, callback_send_o_link_set, NULL);
- verse_callback_set(verse_send_o_light_set, callback_send_o_light_set, NULL);
- verse_callback_set(verse_send_o_link_set, callback_send_o_link_set, NULL);
- verse_callback_set(verse_send_o_link_destroy, callback_send_o_link_destroy, NULL);
- verse_callback_set(verse_send_o_method_group_create, callback_send_o_method_group_create, NULL);
- verse_callback_set(verse_send_o_method_group_destroy, callback_send_o_method_group_destroy, NULL);
- verse_callback_set(verse_send_o_method_group_subscribe, callback_send_o_method_group_subscribe, NULL);
- verse_callback_set(verse_send_o_method_group_unsubscribe, callback_send_o_method_group_unsubscribe, NULL);
- verse_callback_set(verse_send_o_method_create, callback_send_o_method_create, NULL);
- verse_callback_set(verse_send_o_method_destroy, callback_send_o_method_destroy, NULL);
- verse_callback_set(verse_send_o_method_call, callback_send_o_method_call, NULL);
- verse_callback_set(verse_send_o_anim_run, callback_send_o_anim_run, NULL);
- verse_callback_set(verse_send_o_hide, callback_send_o_hide, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_particle.c b/extern/verse/dist/vs_node_particle.c
deleted file mode 100644
index 8c7b1ce3c82..00000000000
--- a/extern/verse/dist/vs_node_particle.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-/*
-typedef struct {
- VSNodeHead head;
-} VSNodeObject;
-
-VSNodeObject *vs_o_create_node(unsigned int owner)
-{
- VSNodeObject *node;
- node = malloc(sizeof *node);
- create_node_head(&node->head, name, owner);
- vs_add_new_node(&node->head, V_NT_OBJECT);
- return node;
-}
-
-void vs_o_destroy_node(VSNodeObject *node)
-{
- destroy_node_head(&node->head);
- free(node);
-}
-
-void vs_o_subscribe(VSNodeObject *node)
-{
-}
-
-static void callback_send_o_unsubscribe(void *user, VNodeID node_id)
-{
- VSNodeObject *node;
- node = (VSNodeObject *)vs_get_node(node_id);
- if(node == NULL)
- return;
- vs_remove_subscriptor(node->head.subscribers);
-}
-
-void vs_o_callback_init(void)
-{
-}
-*/
-#endif
diff --git a/extern/verse/dist/vs_node_storage.c b/extern/verse/dist/vs_node_storage.c
deleted file mode 100644
index 480ceb1f900..00000000000
--- a/extern/verse/dist/vs_node_storage.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-#define VS_NODE_STORAGE_CHUNK_SIZE 16
-
-static struct {
- VSNodeHead **nodes;
- unsigned int node_length;
- unsigned int node_allocated;
- VSSubscriptionList *list[V_NT_NUM_TYPES];
-} VSNodeStorage;
-
-extern void callback_send_tag_group_create(void *user, VNodeID node_id, uint16 group_id, const char *name);
-
-void vs_init_node_storage(void)
-{
- unsigned int i;
- VSNodeStorage.nodes = malloc((sizeof *VSNodeStorage.nodes) * VS_NODE_STORAGE_CHUNK_SIZE);
- VSNodeStorage.nodes[0] = NULL;
- VSNodeStorage.node_length = 0;
- VSNodeStorage.node_allocated = VS_NODE_STORAGE_CHUNK_SIZE;
- for(i = 0; i < V_NT_NUM_TYPES; i++)
- VSNodeStorage.list[i] = vs_create_subscription_list();
-}
-
-unsigned int vs_add_new_node(VSNodeHead *node, VNodeType type)
-{
- unsigned int i, j;
- for(i = 0; i < VSNodeStorage.node_length && VSNodeStorage.nodes[i] != NULL; i++);
- if(i >= VSNodeStorage.node_allocated)
- {
- j = VSNodeStorage.node_allocated;
- VSNodeStorage.node_allocated += VS_NODE_STORAGE_CHUNK_SIZE;
- VSNodeStorage.nodes = realloc(VSNodeStorage.nodes, (sizeof *VSNodeStorage.nodes) * VSNodeStorage.node_allocated);
- while(j < VSNodeStorage.node_allocated)
- VSNodeStorage.nodes[j++] = NULL;
- }
- VSNodeStorage.nodes[i] = node;
- if(i >= VSNodeStorage.node_length)
- VSNodeStorage.node_length = i + 1;
- node->id = i;
- node->type = type;
-
- return node->id;
-}
-
-VSNodeHead *vs_get_node(unsigned int node_id, VNodeType type)
-{
- if(VSNodeStorage.node_length > node_id)
- {
- VSNodeHead *node = VSNodeStorage.nodes[node_id];
-
- if(node != NULL && node->type == type)
- return node;
- }
- return NULL;
-}
-
-VSNodeHead *vs_get_node_head(unsigned int node_id)
-{
- if(VSNodeStorage.node_length > node_id)
- return VSNodeStorage.nodes[node_id];
- return NULL;
-}
-
-extern VSNodeHead *vs_o_create_node(unsigned int owner);
-extern VSNodeHead *vs_g_create_node(unsigned int owner);
-extern VSNodeHead *vs_m_create_node(unsigned int owner);
-extern VSNodeHead *vs_b_create_node(unsigned int owner);
-extern VSNodeHead *vs_t_create_node(unsigned int owner);
-extern VSNodeHead *vs_c_create_node(unsigned int owner);
-extern VSNodeHead *vs_p_create_node(unsigned int owner);
-extern VSNodeHead *vs_a_create_node(unsigned int owner);
-
-extern void vs_o_destroy_node(VSNodeHead *node);
-extern void vs_g_destroy_node(VSNodeHead *node);
-extern void vs_m_destroy_node(VSNodeHead *node);
-extern void vs_b_destroy_node(VSNodeHead *node);
-extern void vs_t_destroy_node(VSNodeHead *node);
-extern void vs_c_destroy_node(VSNodeHead *node);
-extern void vs_p_destroy_node(VSNodeHead *node);
-extern void vs_a_destroy_node(VSNodeHead *node);
-
-
-VNodeID vs_node_create(VNodeID owner_id, unsigned int type)
-{
- unsigned int count, i;
- VSNodeHead *node;
- VNodeID node_id;
-
- printf("vs_node_create(%u, %u)\n", owner_id, type);
- switch(type)
- {
- case V_NT_OBJECT :
- node = vs_o_create_node(owner_id);
- break;
- case V_NT_GEOMETRY :
- node = vs_g_create_node(owner_id);
- break;
- case V_NT_MATERIAL :
- node = vs_m_create_node(owner_id);
- break;
- case V_NT_BITMAP :
- node = vs_b_create_node(owner_id);
- break;
- case V_NT_TEXT :
- node = vs_t_create_node(owner_id);
- break;
- case V_NT_CURVE :
- node = vs_c_create_node(owner_id);
- break;
- case V_NT_AUDIO :
- node = vs_a_create_node(owner_id);
- break;
- default:
- fprintf(stderr, "Can't create node of unknown type %u\n", type);
- return 0U;
- }
- node_id = node->id;
-
- count = vs_get_subscript_count(VSNodeStorage.list[type]);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(VSNodeStorage.list[type], i);
- if(owner_id != verse_session_get_avatar())
- verse_send_node_create(node_id, type, VN_OWNER_OTHER);
- else
- verse_send_node_create(node_id, type, VN_OWNER_MINE);
- }
- if(count != 0)
- vs_reset_subscript_session();
- return node_id;
-}
-
-/* Initialize an object node into being an avatar. */
-void vs_avatar_init(VNodeID id, const char *name)
-{
- callback_send_tag_group_create(NULL, id, (short) ~0u, "avatar");
- /* FIXME: Populate the group, too. */
-}
-
-void vs_reset_owner(VNodeID owner_id)
-{
- unsigned int i;
-
- for(i = 0; i < VSNodeStorage.node_length; i++)
- if(VSNodeStorage.nodes[i] != NULL)
- if(VSNodeStorage.nodes[i]->owner == owner_id)
- VSNodeStorage.nodes[i]->owner = ~0;
-}
-
-static void callback_send_node_create(void *user_data, VNodeID node_id, uint8 type, VNodeOwner owner_id)
-{
- vs_node_create(vs_get_avatar(), type);
-}
-
-void callback_send_node_destroy(void *user_data, VNodeID node_id)
-{
- unsigned int count, i;
- VSNodeHead *node;
- VNodeType type;
- node = vs_get_node_head(node_id);
- if(node == NULL)
- return;
- VSNodeStorage.nodes[node_id] = NULL;
- type = node->type;
- switch(type)
- {
- case V_NT_OBJECT :
- vs_o_destroy_node(node);
- break;
- case V_NT_GEOMETRY :
- vs_g_destroy_node(node);
- break;
- case V_NT_MATERIAL :
- vs_m_destroy_node(node);
- break;
- case V_NT_BITMAP :
- vs_b_destroy_node(node);
- break;
- case V_NT_TEXT :
- vs_t_destroy_node(node);
- break;
- case V_NT_CURVE :
- vs_c_destroy_node(node);
- break;
- case V_NT_AUDIO :
- vs_c_destroy_node(node);
- break;
- default:
- fprintf(stderr, __FILE__ " Can't handle node_destroy for type %d--not implemented", type);
- return;
- }
- count = vs_get_subscript_count(VSNodeStorage.list[type]);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(VSNodeStorage.list[type], i);
- verse_send_node_destroy(node_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_node_index_subscribe(void *user_data, uint32 mask)
-{
- unsigned int i, j, pow = 1;
-
- for(i = 0; i < V_NT_NUM_TYPES; i++, pow <<= 1)
- {
- if((mask & pow) != 0)
- {
- for(j = 0; j < VSNodeStorage.node_length; j++)
- {
- if(VSNodeStorage.nodes[j] != NULL && VSNodeStorage.nodes[j]->type == (VNodeType)i)
- {
- if(VSNodeStorage.nodes[j]->owner == verse_session_get_avatar())
- verse_send_node_create(VSNodeStorage.nodes[j]->id, i, VN_OWNER_MINE);
- else
- verse_send_node_create(VSNodeStorage.nodes[j]->id, i, VN_OWNER_OTHER);
- }
- }
- vs_add_new_subscriptor(VSNodeStorage.list[i]);
- }
- else
- vs_remove_subscriptor(VSNodeStorage.list[i]);
- }
-}
-
-void init_callback_node_storage(void)
-{
- verse_callback_set(verse_send_node_index_subscribe, callback_send_node_index_subscribe, NULL);
- verse_callback_set(verse_send_node_create, callback_send_node_create, NULL);
- verse_callback_set(verse_send_node_destroy, callback_send_node_destroy, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_node_text.c b/extern/verse/dist/vs_node_text.c
deleted file mode 100644
index ae7c3c737c3..00000000000
--- a/extern/verse/dist/vs_node_text.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-**
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "v_cmd_gen.h"
-
-#if !defined V_GENERATE_FUNC_MODE
-
-#include "verse.h"
-#include "vs_server.h"
-
-#define VS_TEXT_CHUNK_SIZE 4096
-
-typedef struct {
- char name[16];
- char *text;
- size_t length;
- size_t allocated;
- VSSubscriptionList *subscribers;
-} VSTextBuffer;
-
-typedef struct {
- VSNodeHead head;
- char language[512];
- VSTextBuffer *buffer;
- unsigned int buffer_count;
-} VSNodeText;
-
-VSNodeText * vs_t_create_node(unsigned int owner)
-{
- VSNodeText *node;
- char name[48];
- unsigned int i;
- node = malloc(sizeof *node);
- vs_add_new_node(&node->head, V_NT_TEXT);
- sprintf(name, "Text_Node_%u", node->head.id);
- create_node_head(&node->head, name, owner);
- node->language[0] = 0;
- node->buffer_count = 16;
- node->buffer = malloc((sizeof *node->buffer) * node->buffer_count);
- for(i = 0; i < node->buffer_count; i++)
- node->buffer[i].name[0] = 0;
-
- return node;
-}
-
-void vs_t_destroy_node(VSNodeText *node)
-{
- unsigned int i;
- destroy_node_head(&node->head);
- for(i = 0; i < node->buffer_count; i++)
- {
- if(node->buffer[i].name[0] != 0)
- {
- free(node->buffer[i].text);
- vs_destroy_subscription_list(node->buffer[i].subscribers);
- }
- }
- free(node->buffer);
- free(node);
-}
-
-void vs_t_subscribe(VSNodeText *node)
-{
- unsigned int i;
- verse_send_t_language_set(node->head.id, node->language);
- for(i = 0; i < node->buffer_count; i++)
- if(node->buffer[i].name[0] != 0)
- verse_send_t_buffer_create(node->head.id, i, node->buffer[i].name);
-}
-
-void vs_t_unsubscribe(VSNodeText *node)
-{
- unsigned int i;
- for(i = 0; i < node->buffer_count; i++)
- if(node->buffer[i].name[0] != 0)
- vs_remove_subscriptor(node->buffer[i].subscribers);
-}
-
-static void callback_send_t_language_set(void *user, VNodeID node_id, char *language)
-{
- VSNodeText *node;
- unsigned int i, count;
- node = (VSNodeText *)vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
- for(i = 0; i < 511 && language[i]; i++)
- node->language[i] = language[i];
- node->language[i] = 0;
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_t_language_set(node_id, language);
- }
- vs_reset_subscript_session();
-
-}
-
-static void callback_send_t_buffer_create(void *user, VNodeID node_id, VBufferID buffer_id, const char *name)
-{
- VSNodeText *node;
- unsigned int i, count;
- node = (VSNodeText *)vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
-
- if(buffer_id >= node->buffer_count || node->buffer[buffer_id].name[0] != 0)
- {
- for(buffer_id = 0; buffer_id < node->buffer_count && node->buffer[buffer_id].name[0] != 0; buffer_id++)
- ;
- if(buffer_id == node->buffer_count)
- {
- node->buffer = realloc(node->buffer, (sizeof *node->buffer) * node->buffer_count);
- for(i = node->buffer_count; i < node->buffer_count + 16; i++)
- node->buffer[i].name[0] = 0;
- node->buffer_count = i;
- }
- }
-
- if(node->buffer[buffer_id].name[0] == 0)
- {
- node->buffer[buffer_id].allocated = VS_TEXT_CHUNK_SIZE;
- node->buffer[buffer_id].text = malloc(node->buffer[buffer_id].allocated);
- node->buffer[buffer_id].length = 0;
- node->buffer[buffer_id].subscribers = vs_create_subscription_list();
- }
- for(i = 0; i < 15 && name[i] != 0; i++)
- node->buffer[buffer_id].name[i] = name[i];
- node->buffer[buffer_id].name[i] = 0;
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_t_buffer_create(node_id, buffer_id, name);
- }
- vs_reset_subscript_session();
-}
-
-void callback_send_t_buffer_destroy(void *user, VNodeID node_id, VBufferID buffer_id)
-{
- VSNodeText *node;
- unsigned int i, count;
- node = (VSNodeText *)vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
-
- if(buffer_id >= node->buffer_count || node->buffer[buffer_id].name[0] == 0)
- return;
-
- node->buffer[buffer_id].name[0] = 0;
- free(node->buffer[buffer_id].text);
- vs_destroy_subscription_list(node->buffer[buffer_id].subscribers);
-
- count = vs_get_subscript_count(node->head.subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(node->head.subscribers, i);
- verse_send_t_buffer_destroy(node_id, buffer_id);
- }
- vs_reset_subscript_session();
-}
-
-static void callback_send_t_buffer_subscribe(void *user, VNodeID node_id, VBufferID buffer_id)
-{
- VSNodeText *node;
- unsigned int i;
-
- node = (VSNodeText *)vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
- if(buffer_id >= node->buffer_count || node->buffer[buffer_id].name[0] == 0)
- return;
- if(vs_add_new_subscriptor(node->buffer[buffer_id].subscribers) == 0)
- return;
- for(i = 0; i < node->buffer[buffer_id].length; i += VN_T_MAX_TEXT_CMD_SIZE)
- {
- if(i + VN_T_MAX_TEXT_CMD_SIZE > node->buffer[buffer_id].length)
- verse_send_t_text_set(node_id, buffer_id, i, node->buffer[buffer_id].length - i, &node->buffer[buffer_id].text[i]);
- else
- verse_send_t_text_set(node_id, buffer_id, i, VN_T_MAX_TEXT_CMD_SIZE, &node->buffer[buffer_id].text[i]);
- }
-}
-
-static void callback_send_t_buffer_unsubscribe(void *user, VNodeID node_id, VBufferID buffer_id)
-{
- VSNodeText *node;
- node = (VSNodeText *)vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
- if(buffer_id >= node->buffer_count || node->buffer[buffer_id].name[0] == 0)
- return;
- vs_remove_subscriptor(node->buffer[buffer_id].subscribers);
-}
-
-static void callback_send_t_text_set(void *user, VNodeID node_id, VBufferID buffer_id, uint32 pos, uint32 length, const char *text)
-{
- VSNodeText *node;
- VSTextBuffer *tb;
- unsigned int i, count, text_length;
- char *buf;
-
- node = (VSNodeText *) vs_get_node(node_id, V_NT_TEXT);
- if(node == NULL)
- return;
- if(buffer_id >= node->buffer_count || node->buffer[buffer_id].name[0] == 0)
- return;
- tb = &node->buffer[buffer_id];
-
- text_length = strlen(text);
-
- /* Clamp position and length of deleted region. */
- if(pos > tb->length)
- pos = tb->length;
- if(pos + length > tb->length)
- length = tb->length - pos;
-
- buf = tb->text;
-
- if(tb->length + text_length - length > tb->allocated)
- {
- buf = realloc(buf, tb->length + text_length - length + VS_TEXT_CHUNK_SIZE);
- tb->allocated = tb->length + text_length - length + VS_TEXT_CHUNK_SIZE;
- }
-
- if(text_length < length) /* Insert smaller than delete? */
- {
- memmove(buf + pos + text_length, buf + pos + length, tb->length - (pos + length));
- memcpy(buf + pos, text, text_length);
- }
- else /* Insert is larger than delete. */
- {
- memmove(buf + pos + text_length, buf + pos + length, tb->length - pos);
- memcpy(buf + pos, text, text_length);
- }
-
- tb->length += (int) text_length - length;
- buf[tb->length] = '\0';
-
- /* Buffer very much larger than content? Then shrink it. */
- if(tb->allocated > VS_TEXT_CHUNK_SIZE * 8 && tb->allocated * 2 > tb->length)
- {
- buf = realloc(buf, tb->length + VS_TEXT_CHUNK_SIZE);
- tb->allocated = tb->length + VS_TEXT_CHUNK_SIZE;
- }
-
- tb->text = buf;
-
- count = vs_get_subscript_count(tb->subscribers);
- for(i = 0; i < count; i++)
- {
- vs_set_subscript_session(tb->subscribers, i);
- verse_send_t_text_set(node_id, buffer_id, pos, length, text);
- }
- vs_reset_subscript_session();
-}
-
-
-void vs_t_callback_init(void)
-{
- verse_callback_set(verse_send_t_language_set, callback_send_t_language_set, NULL);
- verse_callback_set(verse_send_t_buffer_create, callback_send_t_buffer_create, NULL);
- verse_callback_set(verse_send_t_buffer_destroy, callback_send_t_buffer_destroy, NULL);
- verse_callback_set(verse_send_t_buffer_subscribe, callback_send_t_buffer_subscribe, NULL);
- verse_callback_set(verse_send_t_buffer_unsubscribe, callback_send_t_buffer_unsubscribe, NULL);
- verse_callback_set(verse_send_t_text_set, callback_send_t_text_set, NULL);
-}
-
-#endif
diff --git a/extern/verse/dist/vs_server.h b/extern/verse/dist/vs_server.h
deleted file mode 100644
index 76e1b482eb9..00000000000
--- a/extern/verse/dist/vs_server.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-**
-*/
-
-#include <stdlib.h>
-
-extern void vs_init_connection_storage(void);
-extern void vs_add_new_connection(VSession session, const char *name, const char *pass, VNodeID node_id);
-extern void vs_remove_connection(void);
-extern void vs_set_next_session(void);
-
-typedef void VSSubscriptionList;
-
-extern VSSubscriptionList * vs_create_subscription_list(void);
-extern void vs_destroy_subscription_list(VSSubscriptionList *list);
-extern int vs_add_new_subscriptor(VSSubscriptionList *list);
-extern void vs_remove_subscriptor(VSSubscriptionList *list);
-extern unsigned int vs_get_subscript_count(const VSSubscriptionList *list);
-extern void vs_set_subscript_session(VSSubscriptionList *list, unsigned int session);
-extern void vs_reset_subscript_session(void);
-extern uint32 vs_get_avatar(void);
-extern VSession vs_get_session(void);
-extern const char * vs_get_user_name(void);
-extern const char * vs_get_user_pass(void);
-
-
-typedef struct {
- VNodeID id;
- VNodeType type;
- VNodeID owner;
- char *name;
- void *tag_groups;
- uint16 group_count;
- VSSubscriptionList *subscribers;
-} VSNodeHead;
-
-extern void vs_init_node_storage(void);
-extern uint32 vs_add_new_node(VSNodeHead *node, VNodeType type);
-extern VSNodeHead * vs_get_node(unsigned int node_id, VNodeType type);
-extern VSNodeHead * vs_get_node_head(unsigned int node_id);
-
-extern void create_node_head(VSNodeHead *node, const char *name, unsigned int owner);
-extern void destroy_node_head(VSNodeHead *node);
-extern void vs_send_node_head(VSNodeHead *node);
-
-extern void vs_h_callback_init(void); /* "Head", not an actual node type. */
-extern void vs_o_callback_init(void);
-extern void vs_g_callback_init(void);
-extern void vs_m_callback_init(void);
-extern void vs_b_callback_init(void);
-extern void vs_t_callback_init(void);
-extern void vs_c_callback_init(void);
-extern void vs_a_callback_init(void);
-extern void init_callback_node_storage(void);
-
-extern void vs_master_set_enabled(boolean enabled);
-extern void vs_master_set_address(const char *address);
-extern const char * vs_master_get_address(void);
-extern void vs_master_set_desc(const char *desc);
-extern void vs_master_set_tags(const char *tags);
-extern void vs_master_update(void);
-extern void vs_master_handle_describe(const char *address, const char *message);
diff --git a/extern/verse/make/msvc_7_0/libverse.vcproj b/extern/verse/make/msvc_7_0/libverse.vcproj
deleted file mode 100644
index 1c9bfbfce33..00000000000
--- a/extern/verse/make/msvc_7_0/libverse.vcproj
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="verse"
- ProjectGUID="{F9850C15-FF0A-429E-9D47-89FB433C9BD8}"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Blender Debug|Win32"
- OutputDirectory="..\..\..\..\..\build\msvc_7\extern\verse\debug"
- IntermediateDirectory="..\..\..\..\..\build\msvc_7\extern\verse\debug"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\lib\windows\freetype\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FTGL_LIBRARY_STATIC"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_7\extern\verse\debug\libverse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_7\extern\verse\debug\"
- ObjectFile="..\..\..\..\..\build\msvc_7\extern\verse\debug\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_7\extern\verse\debug\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\..\..\build\msvc_7\libs\extern\debug\verse.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Copying verse files library (debug target) to lib tree."
- CommandLine="ECHO Copying header files
-IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\verse\include\ MKDIR ..\..\..\..\..\build\msvc_7\extern\verse\include
-XCOPY /Y ..\..\dist\*.h ..\..\..\..\..\build\msvc_7\extern\verse\include
-ECHO Done
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Blender Release|Win32"
- OutputDirectory="..\..\..\..\..\build\msvc_7\extern\verse"
- IntermediateDirectory="..\..\..\..\..\build\msvc_7\extern\verse"
- ConfigurationType="4"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\lib\windows\freetype\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FTGL_LIBRARY_STATIC"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_7\extern\verse\libverse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_7\extern\verse\"
- ObjectFile="..\..\..\..\..\build\msvc_7\extern\verse\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_7\extern\verse\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\..\..\build\msvc_7\libs\extern\verse.lib"
- SuppressStartupBanner="TRUE"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Copying verse files library to lib tree."
- CommandLine="ECHO Copying header files
-IF NOT EXIST ..\..\..\..\..\build\msvc_7\extern\verse\include\ MKDIR ..\..\..\..\..\build\msvc_7\extern\verse\include
-XCOPY /Y ..\..\dist\*.h ..\..\..\..\..\build\msvc_7\extern\verse\include
-ECHO Done
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
- <File
- RelativePath="..\..\dist\v_bignum.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_buf.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_a.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_b.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_c.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_g.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_m.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_o.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_s.c">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_t.c">
- </File>
- <File
- RelativePath="..\..\dist\v_connect.c">
- </File>
- <File
- RelativePath="..\..\dist\v_connection.c">
- </File>
- <File
- RelativePath="..\..\dist\v_encryption.c">
- </File>
- <File
- RelativePath="..\..\dist\v_func_storage.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_a_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_b_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_c_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_g_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_init.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_m_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_o_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_s_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_t_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_man_pack_node.c">
- </File>
- <File
- RelativePath="..\..\dist\v_network.c">
- </File>
- <File
- RelativePath="..\..\dist\v_network_in_que.c">
- </File>
- <File
- RelativePath="..\..\dist\v_network_out_que.c">
- </File>
- <File
- RelativePath="..\..\dist\v_pack.c">
- </File>
- <File
- RelativePath="..\..\dist\v_pack_method.c">
- </File>
- <File
- RelativePath="..\..\dist\v_prime.c">
- </File>
- <File
- RelativePath="..\..\dist\v_randgen.c">
- </File>
- <File
- RelativePath="..\..\dist\v_util.c">
- </File>
- <File
- RelativePath="..\..\dist\verse_ms.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl">
- <File
- RelativePath="..\..\dist\v_bignum.h">
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_buf.h">
- </File>
- <File
- RelativePath="..\..\dist\v_connection.h">
- </File>
- <File
- RelativePath="..\..\dist\v_encryption.h">
- </File>
- <File
- RelativePath="..\..\dist\v_internal_verse.h">
- </File>
- <File
- RelativePath="..\..\dist\v_network.h">
- </File>
- <File
- RelativePath="..\..\dist\v_network_in_que.h">
- </File>
- <File
- RelativePath="..\..\dist\v_network_out_que.h">
- </File>
- <File
- RelativePath="..\..\dist\v_pack.h">
- </File>
- <File
- RelativePath="..\..\dist\v_randgen.h">
- </File>
- <File
- RelativePath="..\..\dist\v_util.h">
- </File>
- </Filter>
- <File
- RelativePath="..\..\dist\verse_ms.h">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/extern/verse/make/msvc_7_0/verse.vcproj b/extern/verse/make/msvc_7_0/verse.vcproj
deleted file mode 100644
index 563e33e7be9..00000000000
--- a/extern/verse/make/msvc_7_0/verse.vcproj
+++ /dev/null
@@ -1,481 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="verse_server"
- ProjectGUID="{FC752464-F413-4D4F-842D-A5D3AA0E6A3D}"
- SccProjectName=""
- SccLocalPath="">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="3D Plugin Debug|Win32"
- OutputDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug"
- IntermediateDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug\"
- ObjectFile="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\debug\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile=".\..\..\..\source\blender\makesdna\intern/DNA_makesdna.exe"
- LinkIncremental="2"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_7\libs\intern\mtdll\debug;..\..\..\..\build\msvc_7\libs\mtdll\debug"
- IgnoreDefaultLibraryNames=" libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="..\..\..\..\build\msvc_7\libs\debug\DNA_makesdna.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/DNA_makesdna.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\
-DNA_makesdna.exe dna.c
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Blender Release|Win32"
- OutputDirectory="..\..\..\..\bin"
- IntermediateDirectory="..\..\..\..\..\build\msvc_7\extern\verse\server"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_7\source\blender\verse\server\verse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_7\extern\verse\server\"
- ObjectFile="..\..\..\..\..\build\msvc_7\extern\verse\server\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_7\extern\verse\server\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="verse.lib ws2_32.lib"
- OutputFile="..\..\..\..\bin\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\build\msvc_7\libs\extern"
- IgnoreDefaultLibraryNames="libc.lib"
- ProgramDatabaseFile="..\..\..\..\..\build\msvc_7\extern\verse\server\verse.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="3D Plugin Release|Win32"
- OutputDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll"
- IntermediateDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\"
- ObjectFile="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_7\source\blender\makesdna\mtdll\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_7\libs\intern\mtdll;..\..\..\..\build\msvc_7\libs\mtdll"
- IgnoreDefaultLibraryNames=" libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
- ProgramDatabaseFile="..\..\..\..\build\msvc_7\libs\verse.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\
-verse.exe dna.c
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Blender Debug|Win32"
- OutputDirectory="..\..\..\..\bin\debug"
- IntermediateDirectory="..\..\..\..\..\build\msvc_7\extern\verse\server\debug"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_7\source\blender\verse\server\debug\verse.pch"
- ExpandAttributedSource="FALSE"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_7\extern\verse\server\debug\"
- ObjectFile="..\..\..\..\..\build\msvc_7\extern\verse\server\debug\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_7\extern\verse\server\debug\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386
-"
- AdditionalDependencies="verse.lib ws2_32.lib"
- OutputFile="..\..\..\..\bin\debug\verse.exe"
- LinkIncremental="2"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\..\build\msvc_7\libs\extern\debug"
- IgnoreAllDefaultLibraries="FALSE"
- IgnoreDefaultLibraryNames="libcd"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="..\..\..\..\..\build\msvc_7\extern\verse\server\debug\verse.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="BlenderPlayer Debug|Win32"
- OutputDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\blenplayer"
- IntermediateDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\blenplayer"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\verse.pch"
- ExpandAttributedSource="FALSE"
- AssemblerListingLocation="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\"
- ObjectFile="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_7\source\blender\makesdna\debug\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- DebugInformationFormat="3"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386
-"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="2"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_7\libs\intern\debug;..\..\..\..\build\msvc_7\libs\debug"
- IgnoreAllDefaultLibraries="FALSE"
- IgnoreDefaultLibraryNames="libc.lib, libcd.lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="..\..\..\..\build\msvc_7\libs\debug\verse.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern
-verse.exe dna.c
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="BlenderPlayer Release|Win32"
- OutputDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\blenplayer"
- IntermediateDirectory="..\..\..\..\build\msvc_7\source\blender\makesdna\blenplayer"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="TRUE"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="TRUE"
- DefaultCharIsUnsigned="TRUE"
- UsePrecompiledHeader="2"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_7\source\blender\makesdna\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_7\source\blender\makesdna\"
- ObjectFile="..\..\..\..\build\msvc_7\source\blender\makesdna\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_7\source\blender\makesdna\"
- WarningLevel="2"
- SuppressStartupBanner="TRUE"
- CompileAs="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_7\libs\intern;..\..\..\..\build\msvc_7\libs"
- IgnoreDefaultLibraryNames="libc.lib"
- ProgramDatabaseFile="..\..\..\..\build\msvc_7\libs\verse.pdb"
- SubSystem="1"/>
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"/>
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\
-verse.exe dna.c
-"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
- <File
- RelativePath="..\..\dist\vs_connection.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_main.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_master.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_audio.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_bitmap.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_curve.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_geometry.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_head.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_material.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_object.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_particle.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_storage.c">
- </File>
- <File
- RelativePath="..\..\dist\vs_node_text.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl">
- <File
- RelativePath="..\..\dist\v_cmd_gen.h">
- </File>
- <File
- RelativePath="..\..\dist\v_util.h">
- </File>
- <File
- RelativePath="..\..\dist\verse.h">
- </File>
- <File
- RelativePath="..\..\dist\vs_server.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/extern/verse/make/msvc_9_0/libverse.vcproj b/extern/verse/make/msvc_9_0/libverse.vcproj
deleted file mode 100644
index cbe236d5b55..00000000000
--- a/extern/verse/make/msvc_9_0/libverse.vcproj
+++ /dev/null
@@ -1,368 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="EXT_verse"
- ProjectGUID="{531D4862-D0E7-4B9B-A0B6-B3A6A25B547A}"
- RootNamespace="verse"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Blender Debug|Win32"
- OutputDirectory="..\..\..\..\..\build\msvc_9\extern\verse\debug"
- IntermediateDirectory="..\..\..\..\..\build\msvc_9\extern\verse\debug"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\lib\windows\freetype\include"
- PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FTGL_LIBRARY_STATIC"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_9\extern\verse\debug\libverse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_9\extern\verse\debug\"
- ObjectFile="..\..\..\..\..\build\msvc_9\extern\verse\debug\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_9\extern\verse\debug\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\..\..\build\msvc_9\libs\extern\debug\verse.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Copying verse files library (debug target) to lib tree."
- CommandLine="ECHO Copying header files&#x0D;&#x0A;IF NOT EXIST ..\..\..\..\..\build\msvc_9\extern\verse\include\ MKDIR ..\..\..\..\..\build\msvc_9\extern\verse\include&#x0D;&#x0A;XCOPY /Y ..\..\dist\*.h ..\..\..\..\..\build\msvc_9\extern\verse\include&#x0D;&#x0A;ECHO Done&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Blender Release|Win32"
- OutputDirectory="..\..\..\..\..\build\msvc_9\extern\verse"
- IntermediateDirectory="..\..\..\..\..\build\msvc_9\extern\verse"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\lib\windows\freetype\include"
- PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FTGL_LIBRARY_STATIC"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_9\extern\verse\libverse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_9\extern\verse\"
- ObjectFile="..\..\..\..\..\build\msvc_9\extern\verse\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_9\extern\verse\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="..\..\..\..\..\build\msvc_9\libs\extern\verse.lib"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Copying verse files library to lib tree."
- CommandLine="ECHO Copying header files&#x0D;&#x0A;IF NOT EXIST ..\..\..\..\..\build\msvc_9\extern\verse\include\ MKDIR ..\..\..\..\..\build\msvc_9\extern\verse\include&#x0D;&#x0A;XCOPY /Y ..\..\dist\*.h ..\..\..\..\..\build\msvc_9\extern\verse\include&#x0D;&#x0A;ECHO Done&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="..\..\dist\v_bignum.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_buf.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_a.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_b.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_c.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_g.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_m.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_o.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_s.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_def_t.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_connect.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_connection.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_encryption.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_func_storage.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_a_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_b_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_c_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_g_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_init.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_m_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_o_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_s_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_gen_pack_t_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_man_pack_node.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network_in_que.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network_out_que.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_pack.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_pack_method.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_prime.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_randgen.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_util.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\verse_ms.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl"
- >
- <File
- RelativePath="..\..\dist\v_bignum.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_cmd_buf.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_connection.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_encryption.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_internal_verse.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network_in_que.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_network_out_que.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_pack.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_randgen.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_util.h"
- >
- </File>
- </Filter>
- <File
- RelativePath="..\..\dist\verse_ms.h"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/extern/verse/make/msvc_9_0/verse.vcproj b/extern/verse/make/msvc_9_0/verse.vcproj
deleted file mode 100644
index 39363156181..00000000000
--- a/extern/verse/make/msvc_9_0/verse.vcproj
+++ /dev/null
@@ -1,669 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9,00"
- Name="EXT_verse_server"
- ProjectGUID="{FC752464-F413-4D4F-842D-A5D3AA0E6A3D}"
- RootNamespace="verse_server"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="3D Plugin Debug|Win32"
- OutputDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug"
- IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/DNA_makesdna.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug\"
- ObjectFile="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\debug\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile=".\..\..\..\source\blender\makesdna\intern/DNA_makesdna.exe"
- LinkIncremental="2"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_9\libs\intern\mtdll\debug;..\..\..\..\build\msvc_9\libs\mtdll\debug"
- IgnoreDefaultLibraryNames=" libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="..\..\..\..\build\msvc_9\libs\debug\DNA_makesdna.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\&#x0D;&#x0A;DNA_makesdna.exe dna.c&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Blender Release|Win32"
- OutputDirectory="..\..\..\..\bin"
- IntermediateDirectory="..\..\..\..\..\build\msvc_9\extern\verse\server"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_9\source\blender\verse\server\verse.pch"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_9\extern\verse\server\"
- ObjectFile="..\..\..\..\..\build\msvc_9\extern\verse\server\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_9\extern\verse\server\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="verse.lib ws2_32.lib"
- OutputFile="..\..\..\..\bin\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\..\build\msvc_9\libs\extern"
- IgnoreDefaultLibraryNames="libc.lib"
- ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\extern\verse\server\verse.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="3D Plugin Release|Win32"
- OutputDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll"
- IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\"
- ObjectFile="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\makesdna\mtdll\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_9\libs\intern\mtdll;..\..\..\..\build\msvc_9\libs\mtdll"
- IgnoreDefaultLibraryNames=" libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
- ProgramDatabaseFile="..\..\..\..\build\msvc_9\libs\verse.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\&#x0D;&#x0A;verse.exe dna.c&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Blender Debug|Win32"
- OutputDirectory="..\..\..\..\bin\debug"
- IntermediateDirectory="..\..\..\..\..\build\msvc_9\extern\verse\server\debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\..\build\msvc_9\source\blender\verse\server\debug\verse.pch"
- ExpandAttributedSource="false"
- AssemblerListingLocation="..\..\..\..\..\build\msvc_9\extern\verse\server\debug\"
- ObjectFile="..\..\..\..\..\build\msvc_9\extern\verse\server\debug\"
- ProgramDataBaseFileName="..\..\..\..\..\build\msvc_9\extern\verse\server\debug\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386&#x0D;&#x0A;"
- AdditionalDependencies="verse.lib ws2_32.lib"
- OutputFile="..\..\..\..\bin\debug\verse.exe"
- LinkIncremental="2"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\..\build\msvc_9\libs\extern\debug"
- IgnoreAllDefaultLibraries="false"
- IgnoreDefaultLibraryNames="libcd"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\extern\verse\server\debug\verse.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="BlenderPlayer Debug|Win32"
- OutputDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\blenplayer"
- IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\blenplayer"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\verse.pch"
- ExpandAttributedSource="false"
- AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\"
- ObjectFile="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\makesdna\debug\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386&#x0D;&#x0A;"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="2"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_9\libs\intern\debug;..\..\..\..\build\msvc_9\libs\debug"
- IgnoreAllDefaultLibraries="false"
- IgnoreDefaultLibraryNames="libc.lib, libcd.lib"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="..\..\..\..\build\msvc_9\libs\debug\verse.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern&#x0D;&#x0A;verse.exe dna.c&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="BlenderPlayer Release|Win32"
- OutputDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\blenplayer"
- IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\makesdna\blenplayer"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\..\..\..\source\blender\makesdna\intern/verse.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include"
- PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="0"
- EnableFunctionLevelLinking="true"
- DefaultCharIsUnsigned="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\makesdna\verse.pch"
- AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\makesdna\"
- ObjectFile="..\..\..\..\build\msvc_9\source\blender\makesdna\"
- ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\makesdna\"
- WarningLevel="2"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libguardedalloc.lib BLI_blenlib.lib odbc32.lib odbccp32.lib"
- OutputFile="..\..\..\source\blender\makesdna\intern\verse.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\build\msvc_9\libs\intern;..\..\..\..\build\msvc_9\libs"
- IgnoreDefaultLibraryNames="libc.lib"
- ProgramDatabaseFile="..\..\..\..\build\msvc_9\libs\verse.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- Description="Building DNA"
- CommandLine="CD ..\..\..\source\blender\makesdna\intern\&#x0D;&#x0A;verse.exe dna.c&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="..\..\dist\vs_connection.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_main.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_master.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_audio.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_bitmap.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_curve.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_geometry.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_head.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_material.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_object.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_particle.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_storage.c"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_node_text.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl"
- >
- <File
- RelativePath="..\..\dist\v_cmd_gen.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\v_util.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\verse.h"
- >
- </File>
- <File
- RelativePath="..\..\dist\vs_server.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/source/Makefile b/source/Makefile
index 85fbc364ce1..7f02ab5cb44 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -200,18 +200,6 @@ ifeq ($(WITH_FREETYPE2), true)
endif
endif
-ifeq ($(WITH_VERSE), true)
- ifeq ($(OS), windows)
- ifeq ($(FREE_WINDOWS), true)
- COMLIB += $(NAN_VERSE)/lib/libverse.a
- else
- COMLIB += $(NAN_VERSE)/lib/verse.lib
- endif
- else
- COMLIB += $(NAN_VERSE)/lib/libverse.a
- endif
-endif
-
ifeq ($(OS), irix)
COMLIB += $(NAN_SDL)/lib/libSDL.a
endif
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();
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index 7e249095868..ddd9b636660 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -240,7 +240,6 @@ IF(UNIX)
blender_CTR
bf_moto
bf_bmfont
- verse
bf_windowmanager
bf_editors
bf_ftfont
diff --git a/source/nan_definitions.mk b/source/nan_definitions.mk
index 04a1d107931..258cfc6f586 100644
--- a/source/nan_definitions.mk
+++ b/source/nan_definitions.mk
@@ -109,10 +109,6 @@ endif
export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
endif
- ifeq ($(WITH_VERSE), true)
- export NAN_VERSE ?= $(LCGDIR)/verse
- endif
-
export WITH_OPENEXR ?= true
export WITH_DDS ?= true
diff --git a/source/nan_link.mk b/source/nan_link.mk
index 186fe07e09a..e92103f56d9 100644
--- a/source/nan_link.mk
+++ b/source/nan_link.mk
@@ -134,9 +134,6 @@ ifeq ($(OS),windows)
LDFLAGS += -mwindows -mno-cygwin -mconsole
DADD += -L/usr/lib/w32api -lnetapi32 -lopengl32 -lglu32 -lshfolder
DADD += -L/usr/lib/w32api -lwinmm -lwsock32
- ifeq ($(WITH_VERSE),true)
- DADD += -lws2_32
- endif
else
DADD = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
DADD += advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
diff --git a/tools/btools.py b/tools/btools.py
index 21ab547b11a..6cf9058886b 100755
--- a/tools/btools.py
+++ b/tools/btools.py
@@ -56,8 +56,6 @@ def validate_arguments(args, bc):
'WITH_BF_BINRELOC',
'LCGDIR',
'BF_CXX', 'WITH_BF_STATICCXX', 'BF_CXX_LIB_STATIC',
- 'WITH_BF_VERSE', 'BF_VERSE_INCLUDE',
- 'VERSE_BUILD_BINARY', 'VERSE_BUILD_DIR', 'VERSE_REGEN_PROTO',
'BF_TWEAK_MODE', 'BF_SPLIT_SRC',
'WITHOUT_BF_INSTALL',
'WITH_BF_OPENMP',
@@ -146,17 +144,7 @@ def SetupSpawn( env ):
def read_opts(cfg, args):
localopts = Variables.Variables(cfg, args)
localopts.AddVariables(
- ('VERSE_BUILD_BINARY', 'Build a release or debug binary.', 'release'),
- ('VERSE_BUILD_DIR', 'Target directory for intermediate files.', "${BF_BUILDDIR}/extern/verse"),
- ('VERSE_REGEN_PROTO', 'Whether to regenerate the protocol files', 'yes'),
- (BoolVariable('WITH_BF_VERSE', 'Use VERSE if true', False)),
- ('BF_VERSE_INCLUDE', 'verse include dir', '/usr/include'),
('LCGDIR', 'location of cvs lib dir'),
- ('VERSE_BUILD_BINARY', 'Build a release or debug binary.', 'release'),
- ('VERSE_BUILD_DIR', 'Target directory for intermediate files.', "${BF_BUILDDIR}/extern/verse"),
- ('VERSE_REGEN_PROTO', 'Whether to regenerate the protocol files', 'yes'),
- ('BF_DEBUG_LIBS', 'list of libraries to build with debug symbols'),
-
(BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)),
('BF_PYTHON', 'base path for python', ''),
('BF_PYTHON_VERSION', 'Python version to use', ''),