71 const vrpn_SoundDef sound,
char **buf)
73 vrpn_int32 len =
static_cast<vrpn_int32
>(
74 sizeof(
vrpn_SoundID) + strlen(filename) +
sizeof(vrpn_SoundDef) + 1);
84 for (i = 0; i < 3; i++)
87 for (i = 0; i < 4; i++)
88 vrpn_buffer(&mptr, &len, sound.pose.orientation[i]);
90 for (i = 0; i < 4; i++)
108 static_cast<vrpn_int32
>(strlen(filename)) + 1);
118 const char *mptr = buf;
122 new char[payload -
sizeof(
vrpn_SoundID) -
sizeof(vrpn_SoundDef)];
126 for (i = 0; i < 3; i++)
129 for (i = 0; i < 4; i++)
132 for (i = 0; i < 4; i++)
150 payload -
sizeof(
vrpn_SoundID) -
sizeof(vrpn_SoundDef));
185 const char *mptr = buf;
196 const vrpn_int32 repeat,
char *buf)
200 sizeof(vrpn_SoundDef) +
sizeof(
vrpn_SoundID) +
sizeof(vrpn_int32);
201 vrpn_int32 ret = len;
207 for (i = 0; i < 3; i++)
210 for (i = 0; i < 4; i++)
211 vrpn_buffer(&mptr, &len, sound.pose.orientation[i]);
213 for (i = 0; i < 4; i++)
236 const char *mptr = buf;
242 for (i = 0; i < 3; i++)
245 for (i = 0; i < 4; i++)
248 for (i = 0; i < 4; i++)
272 vrpn_int32 len =
sizeof(vrpn_ListenerDef);
273 vrpn_int32 ret = len;
276 for (i = 0; i < 3; i++)
279 for (i = 0; i < 4; i++)
287 const char *mptr = buf;
290 for (i = 0; i < 3; i++)
293 for (i = 0; i < 4; i++)
300 const vrpn_int32 repeat,
char *buf)
303 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_int32);
304 vrpn_int32 ret = len;
314 const char *mptr = buf;
325 vrpn_int32 len =
sizeof(vrpn_float64) * 4;
326 vrpn_int32 ret = len;
329 for (i = 0; i < 4; i++)
336 vrpn_float64 *velocity)
338 const char *mptr = buf;
340 for (
int i = 0; i < 4; i++)
350 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_PoseDef);
351 vrpn_int32 ret = len;
356 for (i = 0; i < 4; i++)
359 for (i = 0; i < 3; i++)
368 const char *mptr = buf;
373 for (i = 0; i < 4; i++)
376 for (i = 0; i < 3; i++)
386 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64) * 4;
387 vrpn_int32 ret = len;
392 for (i = 0; i < 4; i++)
399 vrpn_float64 *velocity,
402 const char *mptr = buf;
407 for (i = 0; i < 4; i++)
414 const vrpn_float64 max_back,
415 const vrpn_float64 min_front,
416 const vrpn_float64 max_front,
420 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64) * 4;
421 vrpn_int32 ret = len;
434 vrpn_float64 *max_back, vrpn_float64 *min_front,
437 const char *mptr = buf;
449 const vrpn_float64 cone_outer_angle,
450 const vrpn_float64 cone_gain,
454 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64) * 3;
455 vrpn_int32 ret = len;
467 vrpn_float64 *cone_inner_angle,
468 vrpn_float64 *cone_outer_angle,
469 vrpn_float64 *cone_gain,
472 const char *mptr = buf;
487 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64);
488 vrpn_int32 ret = len;
498 vrpn_float64 *doplerfactor,
501 const char *mptr = buf;
513 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64);
514 vrpn_int32 ret = len;
524 vrpn_float64 *eqfactor,
527 const char *mptr = buf;
540 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64);
541 vrpn_int32 ret = len;
553 const char *mptr = buf;
566 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64);
567 vrpn_int32 ret = len;
579 const char *mptr = buf;
590 static_cast<vrpn_int32
>(
sizeof(
vrpn_SoundID) + strlen(filename) + 1);
591 vrpn_int32 ret = len;
594 *buf =
new char[strlen(filename) +
sizeof(
vrpn_SoundID) + 1];
598 static_cast<vrpn_int32
>(strlen(filename)) + 1);
606 const char *mptr = buf;
632 vrpn_int32 len =
sizeof(vrpn_QuadDef);
633 vrpn_int32 ret = len;
639 for (i = 0; i < 4; i++)
640 for (
int j(0); j < 3; j++)
650 const char *mptr = buf;
656 for (i = 0; i < 4; i++)
657 for (
int j(0); j < 3; j++)
667 vrpn_int32 len =
sizeof(vrpn_int32) +
sizeof(vrpn_TriDef);
668 vrpn_int32 ret = len;
674 for (i = 0; i < 3; i++)
675 for (
int j(0); j < 3; j++)
684 const char *mptr = buf;
690 for (i = 0; i < 3; i++)
691 for (
int j(0); j < 3; j++)
699 const vrpn_MaterialDef material,
703 vrpn_int32 len =
sizeof(vrpn_int32) +
sizeof(vrpn_MaterialDef);
704 vrpn_int32 ret = len;
709 vrpn_buffer(&mptr, &len, material.transmittance_gain);
710 vrpn_buffer(&mptr, &len, material.transmittance_highfreq);
711 vrpn_buffer(&mptr, &len, material.reflectance_gain);
712 vrpn_buffer(&mptr, &len, material.reflectance_highfreq);
718 vrpn_MaterialDef *material,
721 const char *mptr = buf;
735 const vrpn_int32 tag,
char *buf)
738 vrpn_int32 len =
sizeof(vrpn_int32) +
sizeof(vrpn_float64) * 12;
739 vrpn_int32 ret = len;
743 for (
int i = 0; i < 4; i++)
744 for (
int j(0); j < 3; j++)
751 vrpn_float64 (*vertices)[4][3],
754 const char *mptr = buf;
758 for (
int i = 0; i < 4; i++)
759 for (
int j(0); j < 3; j++)
766 const vrpn_int32 tag,
char *buf)
769 vrpn_int32 len =
sizeof(vrpn_int32) +
sizeof(vrpn_float64) * 9;
770 vrpn_int32 ret = len;
774 for (
int i = 0; i < 3; i++)
775 for (
int j(0); j < 3; j++)
782 vrpn_float64 (*vertices)[3][3],
785 const char *mptr = buf;
789 for (
int i = 0; i < 3; i++)
790 for (
int j(0); j < 3; j++)
797 const vrpn_int32 tag,
char *buf)
800 vrpn_int32 len =
sizeof(
vrpn_SoundID) +
sizeof(vrpn_float64);
801 vrpn_int32 ret = len;
811 vrpn_float64 *openingfactor,
814 const char *mptr = buf;
824 const vrpn_int32 tag,
char *buf)
827 vrpn_int32 ret = len;
837 vrpn_int32 *tag,
const int)
839 const char *mptr = buf;
855 handle_receiveTextMessage);
877 "vrpn_Sound_Client: cannot write message play: tossing\n");
896 "vrpn_Sound_Client: cannot write message play: tossing\n");
906 const vrpn_SoundDef soundDef)
919 "vrpn_Sound_Client: cannot write message load: tossing\n");
939 "vrpn_Sound_Client: cannot write message unload: tossing\n");
945 const vrpn_float64 volume)
959 "vrpn_Sound_Client: cannot write message change status: tossing\n");
965 vrpn_float64 position[3],
966 vrpn_float64 orientation[4])
970 vrpn_PoseDef tempdef;
972 for (i = 0; i < 4; i++) {
973 tempdef.orientation[i] = orientation[i];
975 for (i = 0; i < 3; i++) {
976 tempdef.position[i] = position[i];
988 "vrpn_Sound_Client: cannot write message change status: tossing\n");
995 const vrpn_float64 velocity[4])
997 char buf[
sizeof(vrpn_float64) * 4 +
sizeof(
vrpn_SoundID)];
1009 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1015 const vrpn_SoundID id,
const vrpn_float64 max_front_dist,
1016 const vrpn_float64 min_front_dist,
const vrpn_float64 max_back_dist,
1017 const vrpn_float64 min_back_dist)
1019 char buf[
sizeof(vrpn_float64) * 4 +
sizeof(
vrpn_SoundID)];
1023 min_back_dist,
id, buf);
1032 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1038 const vrpn_float64 inner_angle,
1039 const vrpn_float64 outer_angle,
1040 const vrpn_float64 gain)
1043 char buf[
sizeof(vrpn_float64) * 3 +
sizeof(
vrpn_SoundID)];
1055 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1061 vrpn_float64 dopfactor)
1076 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1082 vrpn_float64 eq_value)
1096 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1116 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1122 const vrpn_float64 orientation[4])
1124 char buf[
sizeof(vrpn_PoseDef)];
1126 vrpn_PoseDef tempdef;
1129 for (i = 0; i < 4; i++) {
1130 tempdef.orientation[i] = orientation[i];
1132 for (i = 0; i < 3; i++) {
1133 tempdef.position[i] = position[i];
1145 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1153 char buf[
sizeof(vrpn_float64) * 4];
1165 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1184 "vrpn_Sound_Client: cannot write message load: tossing\n");
1198 char buf[
sizeof(vrpn_QuadDef)];
1208 "vrpn_Sound_Client: cannot write message load: tossing\n");
1216 char buf[
sizeof(vrpn_TriDef)];
1226 "vrpn_Sound_Client: cannot write message load: tossing\n");
1232 const vrpn_MaterialDef material)
1235 char buf[
sizeof(vrpn_MaterialDef) +
sizeof(vrpn_int32)];
1245 "vrpn_Sound_Client: cannot write message load: tossing\n");
1252 char buf[
sizeof(vrpn_int32) +
sizeof(vrpn_float64)];
1264 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1270 const vrpn_float64 vertices[4][3])
1272 char buf[
sizeof(vrpn_int32) +
sizeof(vrpn_float64) * 12];
1284 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1290 const char *material_name)
1292 char buf[
sizeof(vrpn_int32) +
sizeof(material_name)];
1304 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1309 const vrpn_float64 vertices[3][3])
1311 char buf[
sizeof(vrpn_int32) +
sizeof(vrpn_float64) * 9];
1323 "vrpn_Sound_Client: cannot write message change status: tossing\n");
1334 void vrpn_Sound_Client::handle_receiveTextMessage(
void *userdata,
1335 const vrpn_TEXTCB t)
1342 vrpn_uint32,
struct timeval)
1344 printf(
"Virtual: %s\n", message);
1351 #ifndef VRPN_CLIENT_ONLY
1419 int vrpn_Sound_Server::handle_loadSoundLocal(
void *userdata,
1425 vrpn_SoundDef soundDef;
1436 int vrpn_Sound_Server::handle_loadSoundRemote(
void *userdata,
1446 vrpn_SoundDef soundDef;
1474 int vrpn_Sound_Server::handle_changeSoundStatus(
void *userdata,
1479 vrpn_SoundDef soundDef;
1487 int vrpn_Sound_Server::handle_setListenerPose(
void *userdata,
1498 int vrpn_Sound_Server::handle_setListenerVelocity(
void *userdata,
1502 vrpn_float64 velocity[4];
1520 int vrpn_Sound_Server::handle_setSoundVelocity(
void *userdata,
1524 vrpn_float64 velocity[4];
1532 int vrpn_Sound_Server::handle_setSoundDistanceinfo(
void *userdata,
1536 vrpn_float64 dist[4];
1545 int vrpn_Sound_Server::handle_setSoundConeinfo(
void *userdata,
1549 vrpn_float64 cinfo[3];
1558 int vrpn_Sound_Server::handle_setSoundDoplerfactor(
void *userdata,
1570 int vrpn_Sound_Server::handle_setSoundEqvalue(
void *userdata,
1582 int vrpn_Sound_Server::handle_setSoundPitch(
void *userdata,
vrpn_HANDLERPARAM p)
1593 int vrpn_Sound_Server::handle_setSoundVolume(
void *userdata,
1605 int vrpn_Sound_Server::handle_loadModelLocal(
void *userdata,
1618 int vrpn_Sound_Server::handle_loadModelRemote(
void *userdata,
1647 vrpn_MaterialDef material;
1656 int vrpn_Sound_Server::handle_setPolyquadVertices(
void *userdata,
1660 vrpn_float64(*vertices)[4][3] = NULL;
1668 int vrpn_Sound_Server::handle_setPolytriVertices(
void *userdata,
1672 vrpn_float64(*vertices)[3][3] = NULL;
1680 int vrpn_Sound_Server::handle_setPolyOpeningfactor(
void *userdata,
1692 int vrpn_Sound_Server::handle_setPolyMaterial(
void *userdata,
1696 char **material = NULL;