proto_pi2d.wrl source
#VRML V2.0 utf8

WorldInfo {
title "PROTO PositionInterpolator2D"
}

PROTO PositionInterpolator2D [
eventIn SFFloat set_fraction
exposedField MFFloat key []
exposedField MFVec2f keyValue []
eventOut SFVec2f value_changed
]
{

DEF Sc Script {
eventIn MFVec2f set_keyValue
eventIn SFVec3f set_value
eventOut SFVec2f value_changed IS value_changed
field SFNode PI DEF PI PositionInterpolator {
set_fraction IS set_fraction
key IS key
}
field SFNode TC DEF TC TextureCoordinate {
point IS keyValue
}
directOutput TRUE
url "javascript:
function set_keyValue(v) {

var kv = new MFVec3f();

for ( var i=0; i<v.length; i++ ) kv[i] = new SFVec3f ( v[i].x, v[i].y, 0 );

PI.keyValue = kv;

}
function initialize () {

set_keyValue( TC.point );

}
function set_value (v) {

value_changed.x = v.x;
value_changed.y = v.y;

}
"
}

ROUTE TC.point TO Sc.set_keyValue
ROUTE PI.value_changed TO Sc.set_value

}