#VRML V2.0 utf8

#環境設定-------------------------------------------------

NavigationInfo { type "EXAMINE" }
Viewpoint { position 0 -1.75 16 }
 

#検査モード
#視点の設定

#色変換用タイマー------------------------------------------

DEF TIMER1 TimeSensor {
 cycleInterval 0.1
 startTime 0
}

#赤色変換用タイマー
一瞬で色が変わるように
cycleInterval値は小さく

DEF TIMER2 TimeSensor {
 cycleInterval 0.1
 startTime 0
}

#黄色変換用タイマー

DEF TIMER3 TimeSensor {
 cycleInterval 0.1
 startTime 0
}
 

#青色変換用タイマー

#本体-----------------------------------------------------

Transform {
 children [

  DEF RED_C ColorInterpolator {
   key [0,1]
   keyValue [1 0 0,1 0 0]
  }

#赤色変換用キー

  DEF YELLOW_C ColorInterpolator {
   key [0,1]
   keyValue [1 1 0,1 1 0]
  }

#黄色変換用キー

  DEF BLUE_C ColorInterpolator {
   key [0,1]
   keyValue [0 0 1,0 0 1]
  }

#青色変換用キー

  Shape {
   appearance DEF AP Appearance {
    material DEF COLOR Material {

#本体のシェイプ
 ←

     diffuseColor 1 1 1
    }
   }

←このdiffuseColorを置き換えると、USE APで指定した以下のMaterialは全て反映される

   geometry DEF GCHO Text {

#デフォルト文字列

    string "Katsu"

←このMFStringScriptで置換

    fontStyle FontStyle {
     justify "MIDDLE"
     size 6
    }
   }
  }
 ]
}
 

#文字列表示の設定
 表示位置の指定
 大きさの指定

#文字列変換用スクリプト------------------------------------

DEF GC1 Script {
 eventIn SFBool isActive
 eventOut MFString string
 field MFString New_String "Computer"
 url "javascript:
 function isActive(b){
  if(b==true)string=New_String;
 }"
}

#球をクリックした場合

DEF GC2 Script {
 eventIn SFBool isActive
 eventOut MFString string
 field MFString New_String "Graphics"
 url "javascript:
 function isActive(b){
  if(b==true)string=New_String;
 }"
}

#立方体をクリックした場合

DEF GC3 Script {
 eventIn SFBool isActive
 eventOut MFString string
 field MFString New_String "Designer"
 url "javascript:
  function isActive(b){
  if(b==true)string=New_String;
 }"
}

#円柱をクリックした場合

#各種ボタン---------------------------------

Transform {
 translation 5 -3 -3
 children [
  DEF BLUE TouchSensor {}
  Shape {
   appearance Appearance {
    material Material {
    diffuseColor 0 0 1
    }
   }
   geometry DEF SPHERE Sphere { radius 1 }
  }
 ]
}

#青色変換用ボタン

Transform {
 translation 5 -4 0
 children [
  DEF RED TouchSensor {}
  Shape {
   appearance Appearance {
    material Material {
     diffuseColor 1 0 0
    }
   }
   geometry USE SPHERE
  }
 ]
}

#赤色変換用ボタン

Transform {
 translation 5 -5 3
 children [
  DEF YELLOW TouchSensor {}
  Shape {
   appearance Appearance {
    material Material {
     diffuseColor 1 1 0
    }
   }
   geometry USE SPHERE
  }
 ]
}

#黄色変換用ボタン

Transform {
 translation -5 -3 -3
 children [
  DEF G_SYL TouchSensor {}
  Shape {
   appearance USE AP
   geometry Cylinder {}
  }
 ]
}

#文字列変換用円柱ボタン

Transform {
 translation -5 -4 0
 children [
  DEF G_BOX TouchSensor {}
  Shape {
   appearance USE AP
   geometry Box{}
  }
 ]
}

#文字列変換用立方体ボタン

Transform {
 translation -5 -5 3
 children [
  DEF G_SPH TouchSensor {}
  Shape {
   appearance USE AP
   geometry USE SPHERE
  }
 ]
}
 

#文字列変換用球ボタン

#ルート制御=================================================

#文字列変換-----------------------------------------------

ROUTE G_SPH.isActive TO GC1.isActive
ROUTE GC1.string TO GCHO.set_string

#Computerに変換

ROUTE G_BOX.isActive TO GC2.isActive
ROUTE GC2.string TO GCHO.set_string

#Graphicsに変換

ROUTE G_SYL.isActive TO GC3.isActive
ROUTE GC3.string TO GCHO.set_string
 

#Designerに変換

#色変換---------------------------------------------------

ROUTE RED.touchTime TO TIMER1.set_startTime
ROUTE TIMER1.fraction_changed TO RED_C.set_fraction
ROUTE RED_C.value_changed TO COLOR.set_diffuseColor

#赤色変換

ROUTE YELLOW.touchTime TO TIMER2.set_startTime
ROUTE TIMER2.fraction_changed TO YELLOW_C.set_fraction
ROUTE YELLOW_C.value_changed TO COLOR.set_diffuseColor

#黄色変換

ROUTE BLUE.touchTime TO TIMER3.set_startTime
ROUTE TIMER3.fraction_changed TO BLUE_C.set_fraction
ROUTE BLUE_C.value_changed TO COLOR.set_diffuseColor

#青色変換