// AJAX3D3b.js 20061015 var web3Dbrowser = null; var web3Dbrowsercontext = null; var listener = null; var listenersSetup = false; var xoffset = -3; window.onload = initX3Dbrowser; function initX3Dbrowser() { web3Dbrowser = null; // Connect host DOM to X3D Browser SAI web3Dbrowser = document.objx3d.getBrowser(); if (web3Dbrowser == null) { alert("Couldn't get X3D Browser object!"); return; } // Connect SAI browserChanged event to DOM listener = new Object(); listener.browserChanged = web3DbrowserChanged; // assign DOM browserChanged() handler web3Dbrowser.addBrowserListener(listener); // Load target X3D scene web3Dbrowser.loadUrlS("X3Dempty.x3d"); } function web3DbrowserChanged(evt) { web3Dbrowsercontext = null; theText = null; if (evt != 0) // BROWSER_INITIALIZED = 0 { alert("browserChanged(evt) != 0"); return; } // target scene is loaded and running web3Dbrowsercontext = web3Dbrowser.getExecutionContext(); if (web3Dbrowsercontext == null) { alert("Couldn't get executionContext object!"); return; } } // Click handler - make a new piece of X3D from an XMLHttpRequest! function onClick(what) { if (what == "cube") request = "boxtext.txt"; else if (what == "sphere") request = "spheretext.txt"; else if (what == "cone") request = "conetext.txt"; else return; str = sendXMLHttpRequest(request); addX3DFromString(wrapOffset(str)); xoffset += 3; // increment x translation } function addX3DFromString(str) { var scene = web3Dbrowser.createX3DFromString(str); var rootnodes = scene.getRootNodes(); var i; // Do a bit of work to deal with the quirky X3D add/remove root node paradigm for (i = 0; i < rootnodes.length; i++) { node = rootnodes[i]; scene.removeRootNode(node); web3Dbrowsercontext.addRootNode(node); } } // Helper to move the newly created object to a new // place in the world - offsets X coordinate function wrapOffset(str) { return "Transform { translation " + xoffset + " 0 0 children [ " + str + " ] }"; }