#VRML V2.0 utf8 NavigationInfo { type "EXAMINE" } Viewpoint { position 0 10 10 orientation 1 0 0 -.8 } EXTERNPROTO AvoidBoxChaser [ field SFVec3f position field SFVec3f goal field SFFloat speed field MFVec3f obstacles field SFInt32 index eventIn SFVec3f set_goal eventIn MFVec3f obstacles_changed eventOut MFFloat report_position ] "avoidBoxChaser.wrl" EXTERNPROTO TouchFloor [ field SFVec3f scale field SFColor color ] "touchFloor.wrl" DEF TOUCH TouchFloor { scale 5 1 5 color .2 .2 .2 } DEF CHASER0 AvoidBoxChaser { index 0 position 5 0 -3 speed .5 } DEF CHASER1 AvoidBoxChaser { index 1 position -5 0 -5 speed .5 } DEF CHASER2 AvoidBoxChaser { index 2 position -5 0 4 speed .5 } DEF CHASER3 AvoidBoxChaser { index 3 position -3 0 4 speed .5 } DEF CHASER4 AvoidBoxChaser { index 4 position -1 0 1 speed .5 } DEF CHASER5 AvoidBoxChaser { index 5 position -2 0 2 speed .5 } DEF CHASER6 AvoidBoxChaser { index 6 position -3 0 -2 speed .5 } DEF CHASER7 AvoidBoxChaser { index 7 position -4 0 3 speed .5 } DEF CHASER8 AvoidBoxChaser { index 8 position -5 0 -3 speed .5 } DEF SCRIPT Script { eventIn SFTime beat eventIn MFFloat update_position eventOut MFVec3f chasers_moved field MFVec3f chaserPositions [ ] field SFInt32 numChasers 9 url "vrmlscript: function initialize() { chaserPositions = new MFVec3f(); } function update_position(val) { i = val[0]; x = val[1]; y = val[2]; z = val[3]; chaserPositions[i] = new SFVec3f(x, y, z); } function beat(val) { chasers_moved = chaserPositions; } " } DEF SIMCLOCK TimeSensor { loop TRUE } ROUTE CHASER0.report_position TO SCRIPT.update_position ROUTE CHASER1.report_position TO SCRIPT.update_position ROUTE CHASER2.report_position TO SCRIPT.update_position ROUTE CHASER3.report_position TO SCRIPT.update_position ROUTE CHASER4.report_position TO SCRIPT.update_position ROUTE CHASER5.report_position TO SCRIPT.update_position ROUTE CHASER6.report_position TO SCRIPT.update_position ROUTE CHASER7.report_position TO SCRIPT.update_position ROUTE CHASER8.report_position TO SCRIPT.update_position ROUTE SIMCLOCK.time TO SCRIPT.beat ROUTE SCRIPT.chasers_moved TO CHASER0.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER1.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER2.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER3.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER4.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER5.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER6.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER7.obstacles_changed ROUTE SCRIPT.chasers_moved TO CHASER8.obstacles_changed
mrl