#VRML V2.0 utf8 PROTO BlaxxunZone [ eventIn MFNode addEvents eventIn MFNode removeEvents eventIn MFNode addAvatars eventIn MFNode removeAvatars exposedField MFNode events [] exposedField MFNode avatars [] eventOut MFNode events_added eventOut MFNode events_removed eventOut MFNode avatars_added eventOut MFNode avatars_removed eventIn SFString set_myAvatarURL eventOut SFString myAvatarURL_changed eventIn SFInt32 set_myAvatarGesture eventIn SFInt32 myAvatarGestureFromServer exposedField SFNode beamToViewpoint NULL eventOut SFInt32 myAvatarGesture_changed eventOut SFInt32 myAvatarGestureToServer exposedField MFNode avatarLOD [] exposedField MFFloat avatarRange [] exposedField MFString sendToChat "" exposedField SFFloat beamToDistance 3 exposedField MFString groupChatName "" exposedField MFString groupChat "" exposedField SFString myAvatarName "" eventIn MFNode addObjects eventIn MFNode removeObjects ] { DEF TE Transform { addChildren IS addEvents removeChildren IS removeEvents children IS events } DEF TA Group { children IS avatars } DEF S Script { eventIn MFNode addEvents IS addEvents eventIn MFNode removeEvents IS removeEvents eventIn MFNode addAvatars IS addAvatars eventIn MFNode removeAvatars IS removeAvatars eventIn SFString set_myAvatarURL IS set_myAvatarURL eventOut MFNode events_added IS events_added eventOut MFNode events_removed IS events_removed eventOut MFNode avatars_added IS avatars_added eventOut MFNode avatars_removed IS avatars_removed eventIn SFInt32 set_myAvatarGesture IS set_myAvatarGesture eventIn SFInt32 myAvatarGestureFromServer IS myAvatarGestureFromServer eventOut SFInt32 myAvatarGesture_changed IS myAvatarGesture_changed eventOut SFInt32 myAvatarGestureToServer IS myAvatarGestureToServer eventOut SFString myAvatarURL_changed IS myAvatarURL_changed exposedField MFString sendToChat IS sendToChat exposedField SFFloat beamToDistance IS beamToDistance exposedField MFString groupChatName IS groupChatName exposedField MFString groupChat IS groupChat url "vrmlscript: function addEvents(value, time) { events_added = value; } function addAvatars(value, time) { avatars_added = value; } function removeEvents(value, time) { events_removed = value; } function removeAvatars(value, time) { avatars_removed = value; } function set_myAvatarGesture(value, time) { myAvatarGestureToServer = value; } function myAvatarGestureFromServer(value, time) { myAvatarGesture_changed = value; } function set_myAvatarURL(value, time) { myAvatarURL_changed = value; } " } ROUTE S.avatars_added TO TA.addChildren ROUTE S.avatars_removed TO TA.removeChildren } PROTO SharedEvent [ exposedField SFString name "event" exposedField SFString type "SFTime" exposedField SFString toNickname "" exposedField SFString toGroup "" eventIn SFBool boolFromServer eventIn SFColor colorFromServer eventIn SFFloat floatFromServer eventIn SFInt32 int32FromServer eventIn SFRotation rotationFromServer eventIn SFString stringFromServer eventIn SFTime timeFromServer eventIn SFVec2f vec2fFromServer eventIn SFVec3f vec3fFromServer eventOut SFBool boolToServer eventOut SFColor colorToServer eventOut SFFloat floatToServer eventOut SFInt32 int32ToServer eventOut SFRotation rotationToServer eventOut SFString stringToServer eventOut SFTime timeToServer eventOut SFVec2f vec2fToServer eventOut SFVec3f vec3fToServer eventIn SFBool set_bool eventIn SFColor set_color eventIn SFFloat set_float eventIn SFInt32 set_int32 eventIn SFRotation set_rotation eventIn SFString set_string eventIn SFTime set_time eventIn SFVec2f set_vec2f eventIn SFVec3f set_vec3f eventOut SFBool bool_changed eventOut SFColor color_changed eventOut SFFloat float_changed eventOut SFInt32 int32_changed eventOut SFRotation rotation_changed eventOut SFString string_changed eventOut SFTime time_changed eventOut SFVec2f vec2f_changed eventOut SFVec3f vec3f_changed eventOut SFBool initialized ] { Script { eventIn SFBool boolFromServer IS boolFromServer eventIn SFColor colorFromServer IS colorFromServer eventIn SFFloat floatFromServer IS floatFromServer eventIn SFInt32 int32FromServer IS int32FromServer eventIn SFRotation rotationFromServer IS rotationFromServer eventIn SFString stringFromServer IS stringFromServer eventIn SFTime timeFromServer IS timeFromServer eventIn SFVec2f vec2fFromServer IS vec2fFromServer eventIn SFVec3f vec3fFromServer IS vec3fFromServer eventOut SFBool boolToServer IS boolToServer eventOut SFColor colorToServer IS colorToServer eventOut SFFloat floatToServer IS floatToServer eventOut SFInt32 int32ToServer IS int32ToServer eventOut SFRotation rotationToServer IS rotationToServer eventOut SFString stringToServer IS stringToServer eventOut SFTime timeToServer IS timeToServer eventOut SFVec2f vec2fToServer IS vec2fToServer eventOut SFVec3f vec3fToServer IS vec3fToServer eventIn SFBool set_bool IS set_bool eventIn SFColor set_color IS set_color eventIn SFFloat set_float IS set_float eventIn SFInt32 set_int32 IS set_int32 eventIn SFRotation set_rotation IS set_rotation eventIn SFString set_string IS set_string eventIn SFTime set_time IS set_time eventIn SFVec2f set_vec2f IS set_vec2f eventIn SFVec3f set_vec3f IS set_vec3f eventOut SFBool bool_changed IS bool_changed eventOut SFColor color_changed IS color_changed eventOut SFFloat float_changed IS float_changed eventOut SFInt32 int32_changed IS int32_changed eventOut SFRotation rotation_changed IS rotation_changed eventOut SFString string_changed IS string_changed eventOut SFTime time_changed IS time_changed eventOut SFVec2f vec2f_changed IS vec2f_changed eventOut SFVec3f vec3f_changed IS vec3f_changed eventOut SFBool initialized IS initialized url "vrmlscript: function initialize( time ) { initialized = TRUE;} //function set_name(value, time) { name_changed = value; } //function set_type(value, time) { type_changed = value; } function boolFromServer (value, time) { bool_changed = value; } function colorFromServer (value, time) { color_changed = value; } function floatFromServer (value, time) { float_changed = value; } function int32FromServer (value, time) { int32_changed = value; } function rotationFromServer (value, time) {rotation_changed = value; } function stringFromServer (value, time) { string_changed = value; } function timeFromServer (value, time) { time_changed = time; } function vec2fFromServer (value, time) { vec2f_changed = value; } function vec3fFromServer (value, time) { vec3f_changed = value; } function set_bool (value, time) { boolToServer = value; } function set_color (value, time) { colorToServer = value; } function set_float (value, time) { floatToServer = value; } function set_int32 (value, time) { int32ToServer = value; } function set_rotation (value, time) { rotationToServer = value; } function set_string (value, time) { stringToServer = value; } function set_time (value, time) { timeToServer = value; } function set_vec2f (value, time) { vec2fToServer = value; } function set_vec3f (value, time) { vec3fToServer = value; } " } } DEF SharedZone BlaxxunZone{ events[ DEF Subscribe SharedEvent {name "P_S_GRP_SUBSCRIBE"}, DEF ResetGroup SharedEvent {name "P_S_GRP_RESET"}, DEF Reset SharedEvent {name "P_S_RESET"}, DEF GroupData SharedEvent {name "F_S_GRP_Data"}, DEF GroupHistData SharedEvent {name "P_S_GRP_HIST_Data"} DEF HistData SharedEvent {name "F_S_HIST_Data"} ]} Transform { translation 5 0 0 rotation 0 0 1 0 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 0 ambientIntensity 0.2 } } geometry Box { size 2 2 2 } }, DEF Touch1 TouchSensor {enabled TRUE} ] } Transform { translation -5 0 0 rotation 0 0 1 0 children [ Shape { appearance Appearance { material Material { diffuseColor 1 0 0 ambientIntensity 0.2 } } geometry Box { size 2 2 2 } }, DEF Touch2 TouchSensor {enabled TRUE} ] } Transform { translation 0 0 -10 rotation 0 0 1 0 children [ Billboard{ children[ Shape { appearance Appearance { material Material { diffuseColor 1 1 1 emissiveColor 0.8 0 0 ambientIntensity 0.1 shininess 0.1 } } geometry DEF board Text { string ["group:"] fontStyle FontStyle{ justify "MIDDLE" family [ "SANS", "Arial", "Helvetica"]} #length [32] maxExtent 50 } } ]} ] } DEF SC Script { eventIn SFTime touch1, eventIn SFTime touch2, eventIn SFTime resetAll, eventIn SFString histData, eventIn SFString grpHistData, eventIn SFString grpData, field SFInt32 clicked -1, field SFInt32 history 0, field SFString group "", field SFInt32 grpHistory 0, eventOut SFString subscribe, eventOut SFString reset, eventOut SFString resetGroup, eventOut MFString toBoard, eventOut SFString reddata, eventOut SFString greendata, url "vrmlscript: function histData( value,time ) { Browser.print('subscription history: ' + value ); history = history +1; if ( history > 20 ) { reset = 'F_S_HIST_Data'; history = 0; } } function grpHistData( value,time ) { Browser.print('this groups red click history ' + value ); grpHistory = grpHistory +1; if (grpHistory > 100 ) { resetGroup = group; grpHistory = 0; } } function resetAll(value,time) { reset = group; subscribe = ''; clicked = -1; toBoard = new MFString( 'group'); } function grpData( value,time ) { Browser.print('this groups last green click' + value ); } function touch1( value,time ) { if ( clicked > 9 ) { resetAll(time); } else { clicked = clicked + 1; if ( clicked >0 ) { greendata = new SFString(clicked); } else { group = 'green'; subscribe = group; toBoard = new MFString( 'group: green'); } } } function touch2( value,time ) { if ( clicked > 9 ) { resetAll(time); } else { clicked = clicked + 1; if ( clicked > 0 ) { reddata = new SFString(clicked); } else { group = 'red'; subscribe = group; toBoard = new MFString( 'group: red'); } } } " } ROUTE Touch1.touchTime TO SC.touch1 ROUTE Touch2.touchTime TO SC.touch2 ROUTE SC.subscribe TO Subscribe.set_string ROUTE SC.toBoard TO board.set_string ROUTE SC.resetGroup TO ResetGroup.set_string ROUTE SC.reset TO Reset.set_string ROUTE SC.subscribe TO HistData.set_string ROUTE SC.reddata TO GroupHistData.set_string ROUTE SC.greendata TO GroupData.set_string ROUTE HistData.string_changed TO SC.histData ROUTE GroupHistData.string_changed TO SC.grpHistData ROUTE GroupData.string_changed TO SC.grpData