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_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_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_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]); } }