#VRML V2.0 utf8 # # World with PROTO interfaces and Behaviors # # fbm1.wrl - geometry with texture and behavior added # EXTERNPROTO FBM [ eventIn SFFloat set_clock field SFVec3f position field MFNode functions field MFNode traces ] "fbm1proto.wrl#FBM" EXTERNPROTO FBM_FUNCTION [ eventIn SFFloat set_clock eventIn SFTime clock_tick field MFString name field SFVec3f text_position field SFVec3f function_position eventIn SFBool activate eventIn SFFloat float_data1_in field SFBool process field SFFloat transparency_value field SFFloat min_value eventOut SFFloat new_transparency eventOut SFFloat float_data1_out eventOut SFBool done ] "fbm1proto.wrl#FBM_FUNCTION" EXTERNPROTO FBM_TRACE [ exposedField MFNode geometry ] "fbm1proto.wrl#FBM_TRACE" EXTERNPROTO FBMPATH [ field SFVec3f position field SFVec3f translation ] "fbm1proto.wrl#FBMPATH" EXTERNPROTO SWITCH [ eventIn SFTime touched field SFVec3f position field SFBool state field MFNode behavior eventOut SFBool enabled eventOut SFBool isActive eventOut SFBool state_changed eventOut SFFloat float_data_out ] "switch.wrl#SWITCH" EXTERNPROTO LABEL [ field SFVec3f trn field MFString stg field SFColor txtColor eventIn SFString setStg ] "label.wrl#LABEL" # # World # DEF B1 Background { skyColor [ 0.3 0.5 1, 0.3 0.5 1] } NavigationInfo { headlight TRUE type [ "EXAMINE", "ANY" ]} DEF Clock TimeSensor { loop TRUE cycleInterval 0.25 enabled TRUE stopTime -1 } #DEF Touch TouchSensor {enabled TRUE} DEF Assembly-Line FBM { position 0 2 -12 functions [ DEF Machine1 FBM_FUNCTION { name "M1" text_position -3.3 1 0 function_position -3 0 0 transparency_value 0.92 } #DEF Machine1 DEF Machine2 FBM_FUNCTION { name "M2" text_position -0.3 1 0 function_position 0 0 0 transparency_value 0.92 } #DEF Machine2 DEF Machine3 FBM_FUNCTION { name "M3" text_position 2.7 1 0 function_position 3 0 0 transparency_value 0.92 } #DEF Machine3 ] #functions traces [ DEF Path1 FBM_TRACE { geometry FBMPATH { position -3 0 0 translation 0 0 0 } } #DEF Path1 DEF Path2 FBM_TRACE { geometry FBMPATH { position 2.6 0 0 translation 0.5 0 0 } } #DEF Path2 ] #traces }#DEF Assembly-Line DEF Txt1 LABEL {stg "" trn -9 2 -12 txtColor 1 1 1} DEF Txt2 LABEL {stg "" trn -3 2.5 -12 txtColor 1 1 1} DEF Txt3 LABEL {stg "" trn 3 2.5 -12 txtColor 1 1 1} DEF Txt4 LABEL {stg "" trn 9 2 -12 txtColor 1 1 1} DEF Switch SWITCH { position 0.0 -2.5 -12 } #DEF Switch DEF S Script { eventIn SFBool data1_in field SFInt32 m 0 eventOut SFBool activate_m1 eventOut SFBool activate_m2 eventOut SFBool activate_m3 url "javascript: function data1_in(value,time) { m = m + 1; if (m == 1) activate_m1 = TRUE; if (m == 2) activate_m2 = TRUE; if (m == 3) { activate_m3 = TRUE; m = 0;} }" } DEF cont Script { eventIn SFBool aSignalFromButton eventOut SFString stgToTxt1 eventIn SFBool aSignalFromM1 eventOut SFString stgToTxt2 eventIn SFBool aSignalFromM2 eventOut SFString stgToTxt3 eventIn SFBool aSignalFromM3 eventOut SFString stgToTxt4 url [ "javascript: function aSignalFromButton(value) { stgToTxt1 = 'In = 0.9'; } function aSignalFromM1(value) { stgToTxt2 = '0.6'; } function aSignalFromM2(value) { stgToTxt3 = '0.3'; } function aSignalFromM3(value) { stgToTxt4 = '0.0'; } " ] # end url } # end script # # Routes # #ROUTE Clock.fraction_changed TO Assembly-Line.set_clock ROUTE Clock.cycleTime TO Machine1.clock_tick ROUTE Clock.cycleTime TO Machine2.clock_tick ROUTE Clock.cycleTime TO Machine3.clock_tick # Show the text "In = 0.9" when button is clicked ROUTE Switch.state_changed TO cont.aSignalFromButton ROUTE cont.stgToTxt1 TO Txt1.setStg ROUTE Switch.float_data_out TO Machine1.float_data1_in ROUTE Switch.state_changed TO Machine1.activate # Show the text "0.6" when M1 finishes ROUTE Machine1.done TO cont.aSignalFromM1 ROUTE cont.stgToTxt2 TO Txt2.setStg # Start M2 when M1 finishes ROUTE Machine1.float_data1_out TO Machine2.float_data1_in ROUTE Machine1.done TO Machine2.activate # Show the text "0.3" when M2 finishes ROUTE Machine2.done TO cont.aSignalFromM2 ROUTE cont.stgToTxt3 TO Txt3.setStg # Start M3 when M2 finishes ROUTE Machine2.float_data1_out TO Machine3.float_data1_in ROUTE Machine2.done TO Machine3.activate # Show the text "0.0" when M3 finishes ROUTE Machine3.done TO cont.aSignalFromM3 ROUTE cont.stgToTxt4 TO Txt4.setStg