// file "create3.java" when compiled yields "create3.class" import vrml.*; import vrml.field.*; import vrml.node.*; public class create3 extends Script { private SFNode the_parent; private MFString target_url; private BaseNode tmp; private BaseNode vrml_box []; private Browser b; public void initialize() { // get hold of the node reference the_parent = (SFNode) getField("parentNode"); b = getBrowser(); } public void processEvent(Event e) { // now in response to some input we want to create the new box: if (e.getName().equals("set_newChildren")) nodesReady((ConstMFNode)(e.getValue())); else { target_url = (MFString) getField("target_url"); createNode(); } } private void createNode() { tmp = the_parent.getValue(); String [] urls = new String[target_url.getSize()]; target_url.getValue(urls); try {b.createVrmlFromURL(urls, tmp, "addChildren");} catch(vrml.InvalidVRMLSyntaxException theError) {System.out.println("caught exception");} } private void nodesReady (ConstMFNode nodes) { BaseNode [] node_list = new BaseNode[nodes.getSize()]; nodes.getValue(node_list); // Now we need to add it to the existing scene MFNode add_kids = (MFNode) ((Node) the_parent.getValue() ).getEventIn("addChildren"); // now we add this to the node directly add_kids.setValue(node_list); } }