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:
authorJiri Hnidek <jiri.hnidek@tul.cz>2006-08-22 15:10:31 +0400
committerJiri Hnidek <jiri.hnidek@tul.cz>2006-08-22 15:10:31 +0400
commit91c9917bc00c196ce03d3662b06443c4539bc87e (patch)
tree32cb9fc0ed1a5a03bea0cddd32384f9fe5fc330b /extern/verse
parentb6257305c929464ef50902ab7c98a7c37dd17fd7 (diff)
- bug fix of verse server and verse library backported from verse cvs
Diffstat (limited to 'extern/verse')
-rw-r--r--extern/verse/dist/Makefile4
-rw-r--r--extern/verse/dist/Makefile.win326
-rw-r--r--extern/verse/dist/README23
-rw-r--r--extern/verse/dist/README.html141
-rw-r--r--extern/verse/dist/examples/list-nodes.c39
-rw-r--r--extern/verse/dist/resources/Makefile.win3211
-rw-r--r--extern/verse/dist/resources/verse.icobin0 -> 17814 bytes
-rw-r--r--extern/verse/dist/resources/verse.rc1
-rw-r--r--extern/verse/dist/resources/verse.resbin0 -> 18060 bytes
-rw-r--r--extern/verse/dist/v_bignum.c15
-rw-r--r--extern/verse/dist/v_cmd_buf.c12
-rw-r--r--extern/verse/dist/v_cmd_def_g.c2
-rw-r--r--extern/verse/dist/v_cmd_def_m.c2
-rw-r--r--extern/verse/dist/v_cmd_gen.c62
-rw-r--r--extern/verse/dist/v_connect.c14
-rw-r--r--extern/verse/dist/v_connection.c13
-rw-r--r--extern/verse/dist/v_gen_pack_g_node.c22
-rw-r--r--extern/verse/dist/v_gen_pack_m_node.c2
-rw-r--r--extern/verse/dist/v_man_pack_node.c16
-rw-r--r--extern/verse/dist/v_network.c6
-rw-r--r--extern/verse/dist/v_pack.c2
-rw-r--r--extern/verse/dist/v_prime.c2
-rw-r--r--extern/verse/dist/v_randgen.c2
-rw-r--r--extern/verse/dist/v_util.c12
-rw-r--r--extern/verse/dist/verse.h2
-rw-r--r--extern/verse/dist/vs_main.c7
-rw-r--r--extern/verse/dist/vs_node_geometry.c33
-rw-r--r--extern/verse/dist/vs_node_head.c2
-rw-r--r--extern/verse/dist/vs_node_object.c18
-rw-r--r--extern/verse/dist/vs_node_storage.c2
-rw-r--r--extern/verse/dist/vs_server.h2
31 files changed, 340 insertions, 135 deletions
diff --git a/extern/verse/dist/Makefile b/extern/verse/dist/Makefile
index 32ab7aea815..34cc10603b4 100644
--- a/extern/verse/dist/Makefile
+++ b/extern/verse/dist/Makefile
@@ -8,8 +8,8 @@
#
CC ?= gcc
-CFLAGS ?= "-I$(shell pwd)" -Wall -Wpointer-arith -ansi -g # -pg -O2 -finline-functions
-LDFLAGS ?= -pg
+CFLAGS ?= "-I$(shell pwd)" -Wall -Wextra -Wpointer-arith -Wno-unused-parameter -ansi -g # -pg -O2 -finline-functions
+LDFLAGS ?= # -pg
AR ?= ar
ARFLAGS = rus
diff --git a/extern/verse/dist/Makefile.win32 b/extern/verse/dist/Makefile.win32
index be2a76a5b31..84ca20df7b5 100644
--- a/extern/verse/dist/Makefile.win32
+++ b/extern/verse/dist/Makefile.win32
@@ -52,11 +52,11 @@ VERSE_OBJ = vs_connection.obj vs_main.obj vs_node_audio.obj vs_node_bitmap.obj v
ALL: verse.lib verse.exe
-verse.exe: $(VERSE_OBJ) verse.lib
- cl /Fe$@ $** $** wsock32.lib
+verse.exe: $(VERSE_OBJ) verse.lib resources\verse.res
+ cl /Fe$@ $** wsock32.lib
verse.lib: $(LIBVERSE_OBJ)
- lib /nologo /out:$@ $**
+ link /lib /nologo /out:$@ $**
# -----------------------------------------------------
diff --git a/extern/verse/dist/README b/extern/verse/dist/README
deleted file mode 100644
index 255401207a9..00000000000
--- a/extern/verse/dist/README
+++ /dev/null
@@ -1,23 +0,0 @@
-
- Verse
-
-This is the Verse protocol and sample server implementations.
-
-For more information, see <http://verse.blender.org/>.
-
-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".
-
-
-RELEASE LABELING
-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.
- The symbols V_RELEASE_NUMBER and V_RELEASE_PATCH 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.
diff --git a/extern/verse/dist/README.html b/extern/verse/dist/README.html
new file mode 100644
index 00000000000..ab4f8bf3748
--- /dev/null
+++ b/extern/verse/dist/README.html
@@ -0,0 +1,141 @@
+<!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">
+<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>
+
+<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>-port=N</dt>
+ <dd>
+ Use the indicated port number, rather than the default.
+ </dd>
+ <dt>-master=IP</dt>
+ <dd>
+ Connect to a <a href="http://verse.blender.org/cms/Master_Server.713.0.html">master server</a> at address <i>IP</i>.
+ </dd>
+ <dt>-Q</dt>
+ <dd>
+ Don't register with a <a href="http://verse.blender.org/cms/Master_Server.713.0.html">master server</a>.
+ This is currently the default, as master server operation has not been widely used.
+ </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, with a master server of <code>master.example.org</code>,
+and a port number equal to 16333:
+</p>
+<pre class="shell">~> ./server -master=master.example.org -port=16333
+</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/examples/list-nodes.c b/extern/verse/dist/examples/list-nodes.c
new file mode 100644
index 00000000000..6c9cc000d7c
--- /dev/null
+++ b/extern/verse/dist/examples/list-nodes.c
@@ -0,0 +1,39 @@
+/* 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/resources/Makefile.win32 b/extern/verse/dist/resources/Makefile.win32
new file mode 100644
index 00000000000..8e7b4a09bbd
--- /dev/null
+++ b/extern/verse/dist/resources/Makefile.win32
@@ -0,0 +1,11 @@
+#
+# 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
new file mode 100644
index 00000000000..b30f4c927ef
--- /dev/null
+++ b/extern/verse/dist/resources/verse.ico
Binary files differ
diff --git a/extern/verse/dist/resources/verse.rc b/extern/verse/dist/resources/verse.rc
new file mode 100644
index 00000000000..a068a6f3e3e
--- /dev/null
+++ b/extern/verse/dist/resources/verse.rc
@@ -0,0 +1 @@
+1 ICON verse.ico
diff --git a/extern/verse/dist/resources/verse.res b/extern/verse/dist/resources/verse.res
new file mode 100644
index 00000000000..ed4db6ca27f
--- /dev/null
+++ b/extern/verse/dist/resources/verse.res
Binary files differ
diff --git a/extern/verse/dist/v_bignum.c b/extern/verse/dist/v_bignum.c
index 7ca075f3a6d..3f3ea7f9ccc 100644
--- a/extern/verse/dist/v_bignum.c
+++ b/extern/verse/dist/v_bignum.c
@@ -29,6 +29,7 @@
*
* 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>
@@ -98,7 +99,7 @@ void v_bignum_raw_export(const VBigDig *x, void *bits)
for(i = *x++ - 1; i >= 0; i--)
{
*bytes++ = x[i] >> 8;
- *bytes++ = x[i];
+ *bytes++ = (unsigned char) x[i];
}
}
@@ -184,7 +185,7 @@ void v_bignum_set_bignum(VBigDig *x, const VBigDig *y)
/* 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)
{
- int i, bit;
+ unsigned int i, bit;
v_bignum_set_zero(x);
if(y == NULL || msb > (y[0] * (CHAR_BIT * sizeof *x)))
@@ -304,7 +305,7 @@ void v_bignum_bit_shift_left(VBigDig *x, unsigned int count)
{
unsigned int places = count / (CHAR_BIT * sizeof *x);
- for(i = s - 1; i >= places; i--)
+ for(i = s - 1; i >= (int) places; i--)
x[i] = x[i - places];
for(; i >= 0; i--) /* Clear out the LSBs. */
x[i] = 0;
@@ -313,7 +314,7 @@ void v_bignum_bit_shift_left(VBigDig *x, unsigned int count)
return;
}
/* Shift bits. */
- for(i = carry = 0; i < s; i++)
+ for(i = carry = 0; i < (int) s; i++)
{
t = (x[i] << count) | carry;
x[i] = t;
@@ -339,7 +340,7 @@ void v_bignum_bit_shift_left_1(VBigDig *x)
void v_bignum_bit_shift_right(VBigDig *x, unsigned int count)
{
unsigned int t, carry, s = *x++;
- int i;
+ int i;
/* Shift entire digits first. */
if(count >= CHAR_BIT * sizeof *x)
@@ -351,9 +352,9 @@ void v_bignum_bit_shift_right(VBigDig *x, unsigned int count)
memset(x, 0, s * sizeof *x);
return;
}
- for(i = 0; i < s - places; i++)
+ for(i = 0; i < (int) (s - places); i++)
x[i] = x[i + places];
- for(; i < s; i++)
+ for(; i < (int) s; i++)
x[i] = 0;
count -= places * CHAR_BIT * sizeof *x;
if(count == 0)
diff --git a/extern/verse/dist/v_cmd_buf.c b/extern/verse/dist/v_cmd_buf.c
index bee000abf55..b7faf227352 100644
--- a/extern/verse/dist/v_cmd_buf.c
+++ b/extern/verse/dist/v_cmd_buf.c
@@ -4,6 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "verse_header.h"
#include "v_pack.h"
@@ -34,7 +35,7 @@ void cmd_buf_init(void)
for(i = 0; i < VCMDBS_COUNT; i++)
{
VCMDBufData.buffers[i] = NULL;
- VCMDBufData.available[i] = vcmdbuf_chunk_size[i] * VCMDBUF_INIT_CHUNK_FACTOR;
+ 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);
@@ -87,8 +88,6 @@ void v_cmd_buf_free(VCMDBufHead *head)
void v_cmd_buf_set_size(VCMDBufHead *head, unsigned int size)
{
- if(head->address_size > size);
- head->address_size = size;
head->size = size;
}
@@ -112,14 +111,9 @@ void v_cmd_buf_set_unique_address_size(VCMDBufHead *head, unsigned int size)
boolean v_cmd_buf_compare(VCMDBufHead *a, VCMDBufHead *b)
{
- unsigned int i;
-
if(a->address_sum != b->address_sum)
return FALSE;
if(a->address_size != b->address_size)
return FALSE;
- for(i = 0; i < a->address_size; i++)
- if(((VCMDBuffer1500 *)a)->buf[i] != ((VCMDBuffer1500 *)b)->buf[i])
- return FALSE;
- return TRUE;
+ return memcmp(((VCMDBuffer1500 *)a)->buf, ((VCMDBuffer1500 *)b)->buf, a->address_size) == 0;
}
diff --git a/extern/verse/dist/v_cmd_def_g.c b/extern/verse/dist/v_cmd_def_g.c
index d3149f0f725..66c26e9eadd 100644
--- a/extern/verse/dist/v_cmd_def_g.c
+++ b/extern/verse/dist/v_cmd_def_g.c
@@ -91,7 +91,7 @@ void v_gen_geometry_cmd_def(void)
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 == (VLayerID) ~0)", 2, order);
+ 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);
diff --git a/extern/verse/dist/v_cmd_def_m.c b/extern/verse/dist/v_cmd_def_m.c
index 212c9e3c303..3f4b9aa7178 100644
--- a/extern/verse/dist/v_cmd_def_m.c
+++ b/extern/verse/dist/v_cmd_def_m.c
@@ -159,7 +159,7 @@ void v_gen_material_cmd_def(void)
"\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 + 34 > buffer_length)\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"
diff --git a/extern/verse/dist/v_cmd_gen.c b/extern/verse/dist/v_cmd_gen.c
index ebe2735250b..b687983382d 100644
--- a/extern/verse/dist/v_cmd_gen.c
+++ b/extern/verse/dist/v_cmd_gen.c
@@ -403,7 +403,8 @@ static unsigned int v_cg_compute_command_size(unsigned int start, boolean end)
void v_cg_set_command_address(FILE *f, boolean alias)
{
- unsigned int i, count = 0, length, size = 1, *param, def[] ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ 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;
@@ -422,9 +423,9 @@ void v_cg_set_command_address(FILE *f, boolean alias)
if(i == VCGData.param_count)
return;
fprintf(f, "\tif(");
- for(i = 0; i < length; i++)
+ for(i = j = 0; i < VCGData.param_count; i++)
{
- switch(VCGData.param_type[param[i]])
+ switch(VCGData.param_type[i])
{
case VCGP_UINT8 :
case VCGP_ENUM :
@@ -434,25 +435,46 @@ void v_cg_set_command_address(FILE *f, boolean alias)
case VCGP_LAYER_ID :
case VCGP_BUFFER_ID :
case VCGP_FRAGMENT_ID :
- if(count++ != 0)
- fprintf(f, " || ");
- fprintf(f, "%s == (uint16)(-1)", VCGData.param_name[param[i]]);
size += 2;
break;
case VCGP_NODE_ID :
case VCGP_UINT32 :
case VCGP_REAL32 :
- if(count++ != 0)
- fprintf(f, " || ");
- fprintf(f, "%s == (uint32)(-1)", VCGData.param_name[param[i]]);
size += 4;
break;
- case 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;
+ }
+ 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)(-1)", 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)(-1)", 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");
@@ -568,7 +590,15 @@ static void v_cg_gen_pack(boolean alias)
break;
}
if(no_param)
- param = "-1";
+ {
+ /* 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 :
diff --git a/extern/verse/dist/v_connect.c b/extern/verse/dist/v_connect.c
index ae21bcb0618..31be90e2d47 100644
--- a/extern/verse/dist/v_connect.c
+++ b/extern/verse/dist/v_connect.c
@@ -112,7 +112,7 @@ static void v_send_hidden_connect_terminate(VNetworkAddress *address, unsigned i
VSession verse_send_connect(const char *name, const char *pass, const char *address, const uint8 *expected_key)
{
- uint8 *my_key, *key;
+ uint8 *my_key, *key = NULL;
unsigned int i;
VNetworkAddress a;
VSession *session;
@@ -151,9 +151,9 @@ VSession verse_send_connect(const char *name, const char *pass, const char *addr
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);
+ 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_termanate)(void *user_data, char *address, const char *bye);
+ void (* func_connect_terminate)(void *user_data, char *address, const char *bye);
char address_string[32];
switch(v_con_get_connect_stage())
@@ -193,13 +193,13 @@ void v_update_connection_pending(boolean resend)
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_termanate = v_fs_get_user_func(2);
+ 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_termanate(address = %s, bye = %s); callback = %p\n", address_string, "no message", func_connect);
+ printf("receive: func_connect_terminate(address = %s, bye = %s); callback = %p\n", address_string, "no message", func_connect);
#endif
- if(func_connect_termanate != 0)
- func_connect_termanate(v_fs_get_user_data(2), address_string, "no message");
+ if(func_connect_terminate != 0)
+ func_connect_terminate(v_fs_get_user_data(2), address_string, "no message");
break;
default:
;
diff --git a/extern/verse/dist/v_connection.c b/extern/verse/dist/v_connection.c
index f7a4c23cf5f..b8631fc310b 100644
--- a/extern/verse/dist/v_connection.c
+++ b/extern/verse/dist/v_connection.c
@@ -252,11 +252,14 @@ boolean v_con_network_listen(void)
else
{
fprintf(stderr, __FILE__ ": Unhandled packet--dropping\n");
- fprintf(stderr, __FILE__ ": State: current=%u count=%u stage=%d id=%u\n",
- VConData.current_connection,
- VConData.con_count,
- VConData.con[VConData.current_connection].connect_stage,
- packet_id);
+ if(VConData.con_count > 0)
+ {
+ fprintf(stderr, __FILE__ ": State: current=%u count=%u stage=%d id=%u\n",
+ VConData.current_connection,
+ VConData.con_count,
+ VConData.con[VConData.current_connection].connect_stage,
+ packet_id);
+ }
}
size = v_n_receive_data(&address, buf, sizeof buf); /* See if there are more incoming packets. */
ret = TRUE;
diff --git a/extern/verse/dist/v_gen_pack_g_node.c b/extern/verse/dist/v_gen_pack_g_node.c
index af147d2b04d..7b2b0259cfe 100644
--- a/extern/verse/dist/v_gen_pack_g_node.c
+++ b/extern/verse/dist/v_gen_pack_g_node.c
@@ -234,15 +234,15 @@ void verse_send_g_vertex_delete_real32(VNodeID node_id, uint32 vertex_id)
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], -1);
+ 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)(-1) || vertex_id == (uint32)(-1))
- v_cmd_buf_set_unique_address_size(head, 9);
+ v_cmd_buf_set_unique_address_size(head, 11);
else
- v_cmd_buf_set_address_size(head, 9);
+ 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);
}
@@ -326,15 +326,15 @@ void verse_send_g_vertex_delete_real64(VNodeID node_id, uint32 vertex_id)
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], -1);
+ 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)(-1) || vertex_id == (uint32)(-1))
- v_cmd_buf_set_unique_address_size(head, 9);
+ v_cmd_buf_set_unique_address_size(head, 11);
else
- v_cmd_buf_set_address_size(head, 9);
+ 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);
}
@@ -566,16 +566,16 @@ void verse_send_g_polygon_delete(VNodeID node_id, uint32 polygon_id)
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_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)(-1) || polygon_id == (uint32)(-1))
- v_cmd_buf_set_unique_address_size(head, 9);
+ v_cmd_buf_set_unique_address_size(head, 11);
else
- v_cmd_buf_set_address_size(head, 9);
+ 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);
}
@@ -603,12 +603,12 @@ unsigned int v_unpack_g_polygon_set_corner_uint32(const char *buf, size_t buffer
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 == (VLayerID) ~0)
+ 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 == (VLayerID) ~0)
+ 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);
diff --git a/extern/verse/dist/v_gen_pack_m_node.c b/extern/verse/dist/v_gen_pack_m_node.c
index 623c11515b6..518368d2c0a 100644
--- a/extern/verse/dist/v_gen_pack_m_node.c
+++ b/extern/verse/dist/v_gen_pack_m_node.c
@@ -227,7 +227,7 @@ unsigned int v_unpack_m_fragment_create(const char *buf, size_t buffer_length)
buffer_pos += vnp_raw_unpack_real64(&buf[buffer_pos], &frag.transparency.refraction_index);
break;
case VN_M_FT_VOLUME :
- if(buffer_pos + 34 > buffer_length)
+ 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);
diff --git a/extern/verse/dist/v_man_pack_node.c b/extern/verse/dist/v_man_pack_node.c
index 2b6a50f2e07..1b44bdadd15 100644
--- a/extern/verse/dist/v_man_pack_node.c
+++ b/extern/verse/dist/v_man_pack_node.c
@@ -336,26 +336,26 @@ void verse_send_c_key_set(VNodeID node_id, VLayerID curve_id, uint32 key_id, uin
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, %f}, pre_value = {%f, %f} pre_pos = {%u, %u}); callback = %p\n",
+ 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,
+ 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, %f, %f}, pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u}); callback = %p\n",
+ 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,
+ 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, %f, %f, %f}, pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u}); callback = %p\n",
+ 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],
@@ -448,7 +448,7 @@ unsigned int v_unpack_c_key_set(const char *buf, size_t buffer_length)
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, %f}, pre_value = {%f, %f} pre_pos = {%u, %u}); callback = %p\n",
+ 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],
@@ -457,7 +457,7 @@ unsigned int v_unpack_c_key_set(const char *buf, size_t buffer_length)
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, %f, %f}, pre_value = {%f, %f, %f} pre_pos = {%u, %u, %u}); callback = %p\n",
+ 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],
@@ -467,7 +467,7 @@ unsigned int v_unpack_c_key_set(const char *buf, size_t buffer_length)
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, %f, %f, %f}, pre_value = {%f, %f, %f, %f} pre_pos = {%u, %u, %u, %u}); callback = %p\n",
+ 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],
diff --git a/extern/verse/dist/v_network.c b/extern/verse/dist/v_network.c
index 7f9d527c1ac..2341edf9994 100644
--- a/extern/verse/dist/v_network.c
+++ b/extern/verse/dist/v_network.c
@@ -180,7 +180,7 @@ unsigned int v_n_wait_for_incoming(unsigned int microseconds)
v_n_get_current_time(&s1, &f1);
select(1, &fd_select, NULL, NULL, &tv);
v_n_get_current_time(&s2, &f2);
- return 1000000 * (s2 - s1) + (1000000.0 / 0xffffffffu) * (long) (f2 - f1); /* Must cast to (long) for f1 > f2 case! */
+ return (unsigned int) (1000000 * (s2 - s1) + (1000000.0 / 0xffffffffu) * (long) (f2 - f1)); /* Must cast to (long) for f1 > f2 case! */
}
#endif
@@ -221,9 +221,9 @@ void v_n_get_current_time(uint32 *seconds, uint32 *fractions)
QueryPerformanceCounter(&counter);
if(seconds != NULL)
- *seconds = counter.QuadPart / frequency.QuadPart;
+ *seconds = (uint32) (counter.QuadPart / frequency.QuadPart);
if(fractions != NULL)
- *fractions = (uint32)((0xffffffffULL * (counter.QuadPart % frequency.QuadPart)) / frequency.QuadPart);
+ *fractions = (uint32) ((0xffffffffUL * (counter.QuadPart % frequency.QuadPart)) / frequency.QuadPart);
}
#else
diff --git a/extern/verse/dist/v_pack.c b/extern/verse/dist/v_pack.c
index da80c4bca4f..f521360b11f 100644
--- a/extern/verse/dist/v_pack.c
+++ b/extern/verse/dist/v_pack.c
@@ -48,7 +48,7 @@ size_t vnp_raw_pack_uint16(void *buffer, uint16 data)
size_t vnp_raw_unpack_uint16(const void *buffer, uint16 *data)
{
- const register uint8 *b = buffer;
+ register const uint8 *b = buffer;
register uint16 tmp;
tmp = ((uint16) *b++) << 8;
diff --git a/extern/verse/dist/v_prime.c b/extern/verse/dist/v_prime.c
index c9f787ca89c..cebdf4fb03d 100644
--- a/extern/verse/dist/v_prime.c
+++ b/extern/verse/dist/v_prime.c
@@ -24,7 +24,7 @@ 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 };
- int i;
+ unsigned int i;
for(i = 0; i < sizeof prime / sizeof *prime; i++)
{
diff --git a/extern/verse/dist/v_randgen.c b/extern/verse/dist/v_randgen.c
index baff4b293ad..c65b48be60b 100644
--- a/extern/verse/dist/v_randgen.c
+++ b/extern/verse/dist/v_randgen.c
@@ -84,7 +84,7 @@ void v_randgen_get(VRandGen *gen, void *bytes, size_t num)
{
if(gen != NULL && bytes != NULL)
{
- if(read(gen->fd, bytes, num) != num)
+ 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);
}
}
diff --git a/extern/verse/dist/v_util.c b/extern/verse/dist/v_util.c
index a2608c38115..a36f4c77791 100644
--- a/extern/verse/dist/v_util.c
+++ b/extern/verse/dist/v_util.c
@@ -34,8 +34,8 @@ void v_timer_advance(VUtilTimer *timer, double seconds)
{
if(timer == NULL)
return;
- timer->seconds += (int) seconds;
- timer->fractions += (seconds - (int) seconds) * (double) 0xffffffff;
+ timer->seconds += (uint32) seconds;
+ timer->fractions += (uint32) ((seconds - (int) seconds) * (double) 0xffffffff);
}
double v_timer_elapsed(const VUtilTimer *timer)
@@ -79,10 +79,10 @@ VNQuat32 * v_quat32_from_quat64(VNQuat32 *dst, const VNQuat64 *src)
{
if(dst == NULL || src == NULL)
return NULL;
- dst->x = src->x;
- dst->y = src->y;
- dst->z = src->z;
- dst->w = src->w;
+ dst->x = (real32) src->x;
+ dst->y = (real32) src->y;
+ dst->z = (real32) src->z;
+ dst->w = (real32) src->w;
return dst;
}
diff --git a/extern/verse/dist/verse.h b/extern/verse/dist/verse.h
index ddf9dd96d3f..75207c943db 100644
--- a/extern/verse/dist/verse.h
+++ b/extern/verse/dist/verse.h
@@ -415,8 +415,10 @@ 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/vs_main.c b/extern/verse/dist/vs_main.c
index 5ffed833dee..7e7655a7082 100644
--- a/extern/verse/dist/vs_main.c
+++ b/extern/verse/dist/vs_main.c
@@ -113,7 +113,7 @@ int main(int argc, char **argv)
signal(SIGINT, cb_sigint_handler);
- for(i = 1; i < argc; i++)
+ for(i = 1; i < (uint32) argc; i++)
{
if(strcmp(argv[i], "-Q") == 0)
ms_address = NULL;
@@ -121,6 +121,11 @@ int main(int argc, char **argv)
ms_address = argv[i] + 9;
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\"\n", argv[i]);
}
diff --git a/extern/verse/dist/vs_node_geometry.c b/extern/verse/dist/vs_node_geometry.c
index 4b0ac52f712..c3b7a268a72 100644
--- a/extern/verse/dist/vs_node_geometry.c
+++ b/extern/verse/dist/vs_node_geometry.c
@@ -429,7 +429,7 @@ static unsigned int vs_g_extend_arrays(VSNodeGeometry *node, boolean vertex, boo
{
unsigned int i, j;
- if(base_layer && id == -1)
+ if(base_layer && id == ~0u)
{
if(vertex)
{
@@ -438,7 +438,7 @@ static unsigned int vs_g_extend_arrays(VSNodeGeometry *node, boolean vertex, boo
id = node->vertex_hole;
}else
{
- while(node->polygon_hole < node->poly_size && ((uint32 *)node->layer[1].layer)[node->polygon_hole * 4] != -1)
+ while(node->polygon_hole < node->poly_size && ((uint32 *)node->layer[1].layer)[node->polygon_hole * 4] != ~0u)
node->polygon_hole++;
id = node->polygon_hole;
}
@@ -525,7 +525,7 @@ static void callback_send_g_vertex_set_xyz_real32(void *user, VNodeID node_id, V
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)) == -1)
+ 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)
{
@@ -570,7 +570,7 @@ static void callback_send_g_vertex_set_xyz_real64(void *user, VNodeID node_id, V
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)) == -1)
+ 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)
{
@@ -643,7 +643,7 @@ static void callback_send_g_vertex_set_uint32(void *user, VNodeID node_id, VLaye
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)) == -1)
+ 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);
@@ -664,7 +664,7 @@ static void callback_send_g_vertex_set_real64(void *user, VNodeID node_id, VLaye
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)) == -1)
+ 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);
@@ -691,7 +691,7 @@ static void callback_send_g_vertex_set_real32(void *user, VNodeID node_id, VLaye
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)) == -1)
+ 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);
@@ -720,7 +720,7 @@ static void callback_send_g_polygon_set_corner_uint32(void *user, VNodeID node_i
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)) == -1)
+ 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;
@@ -744,7 +744,7 @@ static void callback_send_g_polygon_set_corner_real64(void *user, VNodeID node_i
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)) == -1)
+ 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;
@@ -775,7 +775,7 @@ static void callback_send_g_polygon_set_corner_real32(void *user, VNodeID node_i
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)) == -1)
+ 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;
@@ -806,7 +806,7 @@ static void callback_send_g_polygon_set_face_uint8(void *user, VNodeID node_id,
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)) == -1)
+ 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);
@@ -828,7 +828,7 @@ static void callback_send_g_polygon_set_face_uint32(void *user, VNodeID node_id,
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)) == -1)
+ 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);
@@ -849,7 +849,7 @@ static void callback_send_g_polygon_set_face_real64(void *user, VNodeID node_id,
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)) == -1)
+ 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);
@@ -876,7 +876,7 @@ static void callback_send_g_polygon_set_face_real32(void *user, VNodeID node_id,
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)) == -1)
+ 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);
@@ -902,13 +902,12 @@ static void callback_send_g_polygon_delete(void *user, VNodeID node_id, uint32 p
if(node == NULL)
return;
- if(polygon_id >= node->poly_size || ((uint32 *)node->layer[1].layer)[polygon_id * 4] == -1)
+ 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] = -1;
+ ((uint32 *)node->layer[1].layer)[polygon_id * 4] = ~0u;
count = vs_get_subscript_count(node->layer[1].subscribers);
for(i = 0; i < count; i++)
{
diff --git a/extern/verse/dist/vs_node_head.c b/extern/verse/dist/vs_node_head.c
index 3200a933a46..9e926411542 100644
--- a/extern/verse/dist/vs_node_head.c
+++ b/extern/verse/dist/vs_node_head.c
@@ -64,7 +64,7 @@ void destroy_node_head(VSNodeHead *node)
}
}
- void callback_send_tag_group_create(void *user, VNodeID node_id, uint16 group_id, char *name)
+ 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;
diff --git a/extern/verse/dist/vs_node_object.c b/extern/verse/dist/vs_node_object.c
index 74061d0bbb2..cee0b8162de 100644
--- a/extern/verse/dist/vs_node_object.c
+++ b/extern/verse/dist/vs_node_object.c
@@ -335,7 +335,7 @@ static void callback_send_o_transform_pos_real64(void *user, VNodeID node_id, ui
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], drag);
+ 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();
@@ -357,7 +357,7 @@ static void callback_send_o_transform_rot_real64(void *user, VNodeID node_id, ui
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? */
+ if((count = vs_get_subscript_count(node->trans_sub32)) > 0) /* Anyone listening at 32 bits? */
{
VNQuat32 rt, spd, acc, drn, *p[3];
@@ -368,7 +368,7 @@ static void callback_send_o_transform_rot_real64(void *user, VNodeID node_id, ui
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], drag);
+ 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();
@@ -394,7 +394,7 @@ static void callback_send_o_transform_scale_real64(void *user, VNodeID node_id,
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);
+ verse_send_o_transform_scale_real32(node_id, (real32) scale_x, (real32) scale_y, (real32) scale_z);
}
vs_reset_subscript_session();
}
@@ -417,10 +417,10 @@ static void callback_send_o_transform_subscribe(void *user, VNodeID node_id, VNR
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);
+ 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);
- verse_send_o_transform_scale_real32(node_id, node->transform.scale[0], node->transform.scale[1], node->transform.scale[2]);
+ 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
{
@@ -551,7 +551,7 @@ static void callback_send_o_method_group_create(void *user, VNodeID node_id, uin
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 + 16; i++)
+ for(i = node->group_count; i < node->group_count + 16u; i++)
{
node->groups[i].name[0] = 0;
node->groups[i].methods = NULL;
@@ -793,7 +793,7 @@ static void callback_send_o_hide(void *user, VNodeID node_id, uint8 hidden)
unsigned int i, count;
node = (VSNodeObject *)vs_get_node(node_id, V_NT_OBJECT);
- if(node == NULL && hidden == node->hidden)
+ if(node == NULL || hidden == node->hidden)
return;
node->hidden = hidden;
count = vs_get_subscript_count(node->head.subscribers);
diff --git a/extern/verse/dist/vs_node_storage.c b/extern/verse/dist/vs_node_storage.c
index 0c5a103f7a3..480ceb1f900 100644
--- a/extern/verse/dist/vs_node_storage.c
+++ b/extern/verse/dist/vs_node_storage.c
@@ -20,6 +20,8 @@ static struct {
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;
diff --git a/extern/verse/dist/vs_server.h b/extern/verse/dist/vs_server.h
index 499908c3a67..0a8716dc260 100644
--- a/extern/verse/dist/vs_server.h
+++ b/extern/verse/dist/vs_server.h
@@ -15,7 +15,7 @@ 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 size_t vs_get_subscript_count(const 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);