//VRMLの制御用クラスライブラリを読み込む import vrml.*; import vrml.node.*; import vrml.field.*; public class AutomaticDoor extends Script{ //変数宣言 //VRMLに返す値の設定です //タイマーイベント関連 private SFTime on; //物体の色変更関連 private SFColor newColor; float red[]={1,0,0}; float white[]={1,1,1}; //物体の移動関連 SFTime openDoor; SFTime closeDoor; //スイッチ関連 boolean onOff = false; boolean sw = false; //Javaが実行されたときの初期設定 public void initialize(){ newColor = (SFColor) getEventOut("newColor"); openDoor = (SFTime)getEventOut("openDoor"); closeDoor = (SFTime)getEventOut("closeDoor"); } //VRMLから呼び出されたときに飛ぶ public void processEvent(Event e){ //タッチセンサーが反応した(ボタンが押された)とき //ボタンを赤色に変更するようにVRMLの送信する if(e.getName().equals("touched") == true){ onOff = true; newColor.setValue(red); }   //範囲指定エリアに視点が移動したとき else if(e.getName().equals("enterArea") == true){ // ボタンが押されているか? if(onOff == true){ //押されていた場合、ボタンを赤から白にして扉を開くように //VRMLに送信する onOff = false; openDoor.setValue(((ConstSFTime)e.getValue()).getValue()); newColor.setValue(white); sw = true; } } //エリア外に出たとき else if(e.getName().equals("exitArea") == true){ //ボタンが押されていた場合扉を閉じる if(sw == true){ closeDoor.setValue(((ConstSFTime)e.getValue()).getValue()); sw = false; } } } }