DEF Sc Script {
eventOut MFNode children
field SFNode Ball Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Sphere {}
}
url "javascript:
function initialize() {
var i = 0;
var balls = new MFNode ();
for ( var x=-2; x<=2; x++ ) {
var Tf = new SFNode ('Transform {}');
Tf.translation[0] = x * 2;
Tf.children[0] = Ball;
balls[i++] = Tf;
}
children = balls;
}
"
}
Tf.translation[0] = x * 2;
Tf.translation.x = x * 2;
DEF Sc Script {
eventIn SFVec3f set_hitPoint
eventOut MFNode addChildren
field SFNode Ball Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Sphere {
radius 0.1
}
}
url "javascript:
function set_hitPoint(vec) {
var Tf = new SFNode ('Transform {}');
Tf.translation = vec;
Tf.children[0] = Ball;
addChildren[0] = Tf;
}
"
}
DEF Sc Script {
eventIn SFVec3f set_hitPoint
eventOut MFNode addChildren
field SFNode Ball Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Sphere {
radius 0.1
}
}
field MFFloat key_0 [ 0.0 0.25 0.5 0.75 1.0 ]
field MFVec3f keyValue_0 [ 0 0 0, 0 1 0, 0 4 0, 0 9 0, 0 16 0 ]
url "javascript:
function set_hitPoint(vec,et) {
// TimeSensor ノードを生成し、イベント時刻を startTime にセットする。
var TiS = new SFNode ('TimeSensor { cycleInterval 20 }');
TiS.startTime = et + 1;
// PositionInterpolator ノードを生成し、key と keyValue をセットする。
var PI = new SFNode ('PositionInterpolator {}');
PI.key = key_0;
PI.keyValue = keyValue_0;
// Transform ノードを生成し、その子ノードをセットする。
var ballTf = new SFNode ('Transform {}');
ballTf.children = new MFNode ( Ball, TiS, PI );
// ルートを追加する。
Browser.addRoute( TiS, 'fraction_changed', PI, 'set_fraction' );
Browser.addRoute( PI, 'value_changed', ballTf, 'translation' );
// Transform ノードを生成し、カーソルが触れた場所に球をセットする。
var Tf = new SFNode ('Transform {}');
Tf.translation = vec;
Tf.children[0] = ballTf;
addChildren[0] = Tf;
}
"
}