#!/bin/csh
#
if (! $#argv) then
  echo "Usage: multi_vrml.csh vrmlfile1 vrmlfile2 ... vrmlfileN"
  echo " "
  echo "Output: multi_vrml_orbitals.wrl"
endif
#
set outfile = multi_vrml_orbitals.wrl
#
#
#
cat << EOF > $outfile
#VRML V2.0 utf8
 NavigationInfo { type "EXAMINE" }
 Viewpoint { position 0 0    3.0     }
EOF
#
#
#
set cnt = 0
foreach file ( $* )
@ cnt = $cnt + 1
cat $file | sed -n -e "/PROTO Surface/,/^ }/p" | sed -e "s/Surface/Surface$cnt/" >> $outfile
end
#
#
#
cat << EOF >> $outfile
 Group {
   children [
     DEF MOLDEN_TOUCH TouchSensor { },
     DEF MOLDENS Switch {
       whichChoice 0
       choice [
EOF
#
#
#
set cnt = 0
foreach file ( $* )
@ cnt = $cnt + 1
cat << EOF >> $outfile
          Group {
            children [
EOF
cat $file | sed -n -e '/^ *Surface/,$p' | sed -e "s/Surface/Surface$cnt/" >> $outfile
cat << EOF >> $outfile
            ]
          }
EOF
end
@ cnt = $cnt - 1
#
#
#
cat << EOF >> $outfile
       ]
     }
   ]
 }
  
 DEF MOLDEN_TIMER TimeSensor { cycleInterval 8 }
  
 PROTO SwitchInterpolator [
   eventIn SFFloat set_fraction
   eventOut SFInt32 value_changed
   field MFFloat key [ ]
   field MFFloat keyValue [ ]
 ]
 {
   DEF INTERP ScalarInterpolator {
     set_fraction IS set_fraction
     key IS key
     keyValue IS keyValue
   }
   DEF INTEGERIZE Script {
     eventIn SFFloat scalarValue
     eventOut SFInt32 value_changed IS value_changed
     url [
       "vrmlscript:
          function scalarValue(scalar) {
            value_changed = Math.floor(scalar);
          }",
          "Float2Int.class"
     ]
   }
   ROUTE INTERP.value_changed TO 
   INTEGERIZE.scalarValue
 }
 DEF MOLDEN_ANIMATOR SwitchInterpolator {
   key [0,1]
   keyValue [0, $cnt]
 }
 ROUTE MOLDEN_TOUCH.touchTime TO
 MOLDEN_TIMER.startTime
 ROUTE MOLDEN_TIMER.fraction_changed TO 
 MOLDEN_ANIMATOR.set_fraction
 ROUTE MOLDEN_ANIMATOR.value_changed TO 
 MOLDENS.whichChoice
EOF
#
