<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Im on using strope.js ( JScript ) and openfire servers to transfere states between spaces in interupt mode i.e. pushing states in xml format trough secure html using push technique instead of the normal pull technic.</p>
<p>Current state set up a net of openfire servers and testing strope examples. <br>
PS been on this for years and put it on hold due to other tasks, but opened up the project resentley.</p>
<p>Sounds interesting ?<br>
Presently on vacation in Belgium<br>
</p>
<p>Sven-Erik Tiberg / sweden.<br>
</p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> x3d-public <x3d-public-bounces@web3d.org> on behalf of John Carlson <yottzumm@gmail.com><br>
<b>Sent:</b> Tuesday, May 23, 2017 12:34:10 AM<br>
<b>To:</b> Joe D Williams; "John Carlson"<br>
<b>Cc:</b> Leonard Daly; educators@x3dbook.com; list; x3dom mlist<br>
<b>Subject:</b> Re: [x3d-public] [x3dom-users] Cobweb_dom...Script Magic? LoadingDOMsubscenesafterparent in X3DOM and Cobweb. ALMOST complete, requiressequencing ofouterfunctions.</font>
<div> </div>
</div>
<div>
<div class="WordSection1">
<p class="MsoNormal"> I don’t use event listeners, I use a setInterval function and JQuery. How would you suggest modifying this code (the body of the setInterval function minus the __eventTime incrementer) to implement the ROUTEs and the X3D Event Model?
Should I do a document.querySelector to get the element, then add a listener? Then when the listener gets called, call the set function or attr? What event do I listen for, especially when a script field changes (there are no fields in HTML scripts). Should
I add a proxy to the my script INSTANCE below? I think I do need a setInterval for the _eventTime. It can get very complex, but if someone gives me a template, I can start duplicating it. How do I get existing events from X3DOM sensors and incorporate them
into this model?</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">X3DJSON is my “package” I probably don’t need the USE attribute.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">if (!$("[DEF=DECLBubble_INSTANCE19000_TourTime], [USE=DECLBubble_INSTANCE19000_TourTime]")) console.error("undefined DECLBubble_INSTANCE19000_TourTime");</p>
<p class="MsoNormal"> X3DJSON.Object_DECLBubble_INSTANCE19000_Bounce.set_fraction($("[DEF=DECLBubble_INSTANCE19000_TourTime], [USE=DECLBubble_INSTANCE19000_TourTime]").attr("cycleTime"), __eventTime);</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> if (!$("[DEF=DECLBubble_INSTANCE19000_transform], [USE=DECLBubble_INSTANCE19000_transform]")) console.error("undefined DECLBubble_INSTANCE19000_transform");</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> $("[DEF=DECLBubble_INSTANCE19000_transform], [USE=DECLBubble_INSTANCE19000_transform]").attr("translation",typeof X3DJSON.Object_DECLBubble_INSTANCE19000_Bounce.translation_changed === "function" ? X3DJSON.Object_DECLBubble_INSTANCE19000_Bounce.translation_changed()
: X3DJSON.Object_DECLBubble_INSTANCE19000_Bounce.translation_changed, __eventTime);</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I do this for each prototype instance. All this code is generated, so you don’t need worry about me writing it more than once.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">CAVEAT: I wrote this code before I knew about JavaScript proxies.</p>
<p class="MsoNormal">Thanks bunches.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">John</p>
<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">
Mail</a> for Windows 10</p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br>
<b>Sent: </b>Monday, May 22, 2017 5:59 PM<br>
<b>To: </b><a href="mailto:joedwil@earthlink.net">Joe D Williams</a>; <a href="mailto:john.carlson3@sbcglobal.net">
"John Carlson"</a><br>
<b>Cc: </b><a href="mailto:Leonard.Daly@realism.com">Leonard Daly</a>; <a href="mailto:x3d-public@web3d.org">
list</a>; <a href="mailto:x3dom-users@lists.sourceforge.net">x3dom mlist</a>; <a href="mailto:educators@x3dbook.com">
educators@x3dbook.com</a><br>
<b>Subject: </b>RE: [x3dom-users] Cobweb_dom...Script Magic? LoadingDOMsubscenesafterparent in X3DOM and Cobweb. ALMOST complete,requiressequencing ofouterfunctions.</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Let me send you my example code and we’ll see how it might be modified.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">John<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">
Mail</a> for Windows 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From: </b><a href="mailto:joedwil@earthlink.net">Joe D Williams</a><br>
<b>Sent: </b>Monday, May 22, 2017 5:51 PM<br>
<b>To: </b><a href="mailto:yottzumm@gmail.com">"John Carlson"</a>; <a href="mailto:john.carlson3@sbcglobal.net">
"John Carlson"</a><br>
<b>Cc: </b><a href="mailto:Leonard.Daly@realism.com">Leonard Daly</a>; <a href="mailto:x3d-public@web3d.org">
list</a>; <a href="mailto:x3dom-users@lists.sourceforge.net">x3dom mlist</a>; <a href="mailto:educators@x3dbook.com">
educators@x3dbook.com</a><br>
<b>Subject: </b>Re: [x3dom-users] Cobweb_dom...Script Magic? LoadingDOMsubscenesafter parent in X3DOM and Cobweb. ALMOST complete,requiressequencing ofouter functions.<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">John, isn't the real contribution of the X3d event system is simply<o:p></o:p></p>
<p class="MsoNormal">the easy way to attach listeners to a node? Also that it is easy to<o:p></o:p></p>
<p class="MsoNormal">document the listener and the path or route the event to the nexxt<o:p></o:p></p>
<p class="MsoNormal">step in processing. Well, I guess also the built-in abilities to group<o:p></o:p></p>
<p class="MsoNormal">events streams in cascade, evaluate the cascade, then apply them to<o:p></o:p></p>
<p class="MsoNormal">the scenegraph as if 'instantatneously' for time and event based<o:p></o:p></p>
<p class="MsoNormal">simulation. Finally, just the way that an X3D scene can be treated as<o:p></o:p></p>
<p class="MsoNormal">an entity which an be controlled by a outside entity in the same way<o:p></o:p></p>
<p class="MsoNormal">as an internal entity.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Maybe there are other important details,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">All Best Wishes,<o:p></o:p></p>
<p class="MsoNormal">Joe<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">----- Original Message ----- <o:p></o:p></p>
<p class="MsoNormal">From: "John Carlson" <john.carlson3@sbcglobal.net><o:p></o:p></p>
<p class="MsoNormal">To: "John Carlson" <yottzumm@gmail.com><o:p></o:p></p>
<p class="MsoNormal">Cc: "Leonard Daly" <Leonard.Daly@realism.com>; "list"<o:p></o:p></p>
<p class="MsoNormal"><x3d-public@web3d.org>; <X3D>; <x3dom-users@lists.sourceforge.net><o:p></o:p></p>
<p class="MsoNormal">Sent: Monday, May 22, 2017 10:38 AM<o:p></o:p></p>
<p class="MsoNormal">Subject: Re: [x3dom-users] Cobweb_dom...Script Magic? Loading<o:p></o:p></p>
<p class="MsoNormal">DOMsubscenesafter parent in X3DOM and Cobweb. ALMOST complete,<o:p></o:p></p>
<p class="MsoNormal">requiressequencing ofouter functions.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> If someone could provide sample JavaScript code which even gets<o:p></o:p></p>
<p class="MsoNormal">> close to implementing the X3D event model (in HTML if you like) for<o:p></o:p></p>
<p class="MsoNormal">> a couple of sample ROUTEs, I could probably take it from there. Or<o:p></o:p></p>
<p class="MsoNormal">> a potential event model replacement. A simple loop apparently<o:p></o:p></p>
<p class="MsoNormal">> doesn't cut it?<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Thanks!<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> On May 22, 2017 11:58 AM, John Carlson <yottzumm@gmail.com> wrote:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> In summary, X3D ecmascript and HTML ecmascript are mostly<o:p></o:p></p>
<p class="MsoNormal">> compatible, except for DOM and SAI. Â I believe Cobweb supports<o:p></o:p></p>
<p class="MsoNormal">> both DOM and SAI, but I could  be corrected. What is different<o:p></o:p></p>
<p class="MsoNormal">> with X3D are 1) fields and 2) ROUTEs. Â I think we can share the<o:p></o:p></p>
<p class="MsoNormal">> same script tag if fields are added to HTML scripts, possibly<o:p></o:p></p>
<p class="MsoNormal">> through some kind of extension or conversion. Fields are currently<o:p></o:p></p>
<p class="MsoNormal">> required for ROUTEs. Â If there was a conversion mechanism for<o:p></o:p></p>
<p class="MsoNormal">> ROUTEs, that would be helpful, and would avoid having to have fields<o:p></o:p></p>
<p class="MsoNormal">> on scripts.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> On May 22, 2017 11:20 AM, "John Carlson" <yottzumm@gmail.com><o:p></o:p></p>
<p class="MsoNormal">> wrote:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> 1.. You don’t have to have HTML script in <script></script>Â<o:p></o:p></p>
<p class="MsoNormal">> you can eval them. You do need X3D Script fields for ROUTES. I am<o:p></o:p></p>
<p class="MsoNormal">> asking for script fields, not script tags. I am fine with the HTML<o:p></o:p></p>
<p class="MsoNormal">> script node, except I just want fields that I can route to. If you<o:p></o:p></p>
<p class="MsoNormal">> provide ROUTEs to non-X3D things that would be an OK alternate by<o:p></o:p></p>
<p class="MsoNormal">> me, too, or a just way to convert X3D Script-based ROUTEs to<o:p></o:p></p>
<p class="MsoNormal">> JavaScript.<o:p></o:p></p>
<p class="MsoNormal">> 2.. Self-modifying scripts are a bad idea. LOL.<o:p></o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Again, I am not asking for strict X3D Scripts. I can build an<o:p></o:p></p>
<p class="MsoNormal">> SAI library or get one if I want to. I am asking for a way to<o:p></o:p></p>
<p class="MsoNormal">> ROUTE between X3D and JavaScript (and by happy circumstance,<o:p></o:p></p>
<p class="MsoNormal">> JavaScript to JavaScript). That is how you need to keep X3D<o:p></o:p></p>
<p class="MsoNormal">> relevant, if you want to maintain a standard, and that’s how you<o:p></o:p></p>
<p class="MsoNormal">> make everyone happy. If there’s a conversion tool, that’s OK<o:p></o:p></p>
<p class="MsoNormal">> by me. Are you going to write it?<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Sent from Mail for Windows 10<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> From: Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> Sent: Monday, May 22, 2017 11:01 AM<o:p></o:p></p>
<p class="MsoNormal">> To: John Carlson<o:p></o:p></p>
<p class="MsoNormal">> Subject: Re: [x3dom-users] Cobweb_dom...Script Magic? Loading<o:p></o:p></p>
<p class="MsoNormal">> DOMsubscenesafter parent in X3DOM and Cobweb. ALMOST complete,<o:p></o:p></p>
<p class="MsoNormal">> requiressequencing ofouter functions.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> On 5/22/2017 7:12 AM, John Carlson wrote:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> The Script AND the Proto problem have ben solved in the HTML<o:p></o:p></p>
<p class="MsoNormal">> environment, I believe, with Cobweb + Cobweb DOM, or close to it.Â<o:p></o:p></p>
<p class="MsoNormal">> See Cobweb 3.2.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John,<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Script is very far from being solved, and (I believe) unsolvable<o:p></o:p></p>
<p class="MsoNormal">> with the constraints of X3D and DOM. These are my reasons.<o:p></o:p></p>
<p class="MsoNormal">> 1) There is a name conflict so X3D Script cannot be in the same<o:p></o:p></p>
<p class="MsoNormal">> namespace as HTML's Script. HTML only has one namespace<o:p></o:p></p>
<p class="MsoNormal">> 2) DOM allows scripts to modify themselves or be modified by<o:p></o:p></p>
<p class="MsoNormal">> other scripts. This is not possible in Cobweb or Cobweb_DOM.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> 3) If you create a new node called (for example) X3dScript<o:p></o:p></p>
<p class="MsoNormal">> replacing the current X3D's Script node you solve (1) and because<o:p></o:p></p>
<p class="MsoNormal">> it's not JavaScript in the DOM, (2) is irrelevant. Now a scene has<o:p></o:p></p>
<p class="MsoNormal">> two different scripting environments. Even though the code looks to<o:p></o:p></p>
<p class="MsoNormal">> be the same (written in the same language), one cannot access<o:p></o:p></p>
<p class="MsoNormal">> fields, methods, properties, etc. of the other. They have different<o:p></o:p></p>
<p class="MsoNormal">> calling mechanisms. The X3dScript node code cannot respond to HTML<o:p></o:p></p>
<p class="MsoNormal">> events (mouseover, click, typing, etc in HTML elements). The<o:p></o:p></p>
<p class="MsoNormal">> HTML/DOM Script code can only interact with X3D elements through<o:p></o:p></p>
<p class="MsoNormal">> X3D's SAI. This design would produce an environment that has minimal<o:p></o:p></p>
<p class="MsoNormal">> (even less than current X3D) adoption. It would be confusing to<o:p></o:p></p>
<p class="MsoNormal">> developers with no obvious reason to the separate design.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Sent from Mail for Windows 10<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> From: Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> Sent: Monday, May 22, 2017 10:06 AM<o:p></o:p></p>
<p class="MsoNormal">> To: John Carlson<o:p></o:p></p>
<p class="MsoNormal">> Cc: X3D Graphics public mailing list;<o:p></o:p></p>
<p class="MsoNormal">> x3dom-users@lists.sourceforge.net; Andreas Plesch;<o:p></o:p></p>
<p class="MsoNormal">> holger.seelig@yahoo.de<o:p></o:p></p>
<p class="MsoNormal">> Subject: Re: [x3dom-users] Cobweb_dom...Script Magic? Loading<o:p></o:p></p>
<p class="MsoNormal">> DOM subscenesafter parent in X3DOM and Cobweb. ALMOST complete,<o:p></o:p></p>
<p class="MsoNormal">> requires sequencing ofouter functions.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John,<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> I have not been convinced that Protos need to exist in an HTML<o:p></o:p></p>
<p class="MsoNormal">> environment. Scripts are an integral piece of the Proto architecture<o:p></o:p></p>
<p class="MsoNormal">> so if you path is to implement Protos on the way to implementing<o:p></o:p></p>
<p class="MsoNormal">> Scripts, you need to solve the entire Script problem first. If<o:p></o:p></p>
<p class="MsoNormal">> Scripts are optional, then why have Proto? I think something like a<o:p></o:p></p>
<p class="MsoNormal">> macro expansion can solve all of the use cases where Proto would be<o:p></o:p></p>
<p class="MsoNormal">> used while being lighter weight and easier to implement and possibly<o:p></o:p></p>
<p class="MsoNormal">> use.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Leonard, I believe Scripts should be implemented AFTER<o:p></o:p></p>
<p class="MsoNormal">> Protos.  Just my opinion. Once the Protos and the ROUTEs and the<o:p></o:p></p>
<p class="MsoNormal">> Scripts are expanded with the new DEFs, then you apply the event<o:p></o:p></p>
<p class="MsoNormal">> model. Â This makes things easier, but takes more memory. Â Then<o:p></o:p></p>
<p class="MsoNormal">> you optimize. Â Beware premature optimization.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> On May 21, 2017 12:16 AM, "Leonard Daly"<o:p></o:p></p>
<p class="MsoNormal">> <Leonard.Daly@realism.com> wrote:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John,<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> I don't really like to answer this way, but why?<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> X3DOM does not have Proto/ExternProto feature. It does not<o:p></o:p></p>
<p class="MsoNormal">> have X3D Script node. The integration with HTML is too close to<o:p></o:p></p>
<p class="MsoNormal">> allow an X3D Script node. HTML JavaScript (via DOM and X3D node<o:p></o:p></p>
<p class="MsoNormal">> manipulation) is available and used extensively. X3DOM does not<o:p></o:p></p>
<p class="MsoNormal">> handle VRML (meaning a text file with {} syntax). There is an<o:p></o:p></p>
<p class="MsoNormal">> unofficial JSON loader. Perhaps you have one too. How does it get<o:p></o:p></p>
<p class="MsoNormal">> the scene graph into DOM? Does it create DOM elements (or perhaps an<o:p></o:p></p>
<p class="MsoNormal">> HTML text string which is then parsed)? Something else?<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> To the extent I understand your question, you are asking<o:p></o:p></p>
<p class="MsoNormal">> for help in constructing a means of handling X3D Script node in<o:p></o:p></p>
<p class="MsoNormal">> X3DOM. Once that is done, Proto/ExternProto would be next. This<o:p></o:p></p>
<p class="MsoNormal">> would all come into the browser through an JSON encoded file. It<o:p></o:p></p>
<p class="MsoNormal">> seems to me that trying to handle X3D Script code requires an entire<o:p></o:p></p>
<p class="MsoNormal">> infrastructure supporting the X3D event mode and calling script code<o:p></o:p></p>
<p class="MsoNormal">> with X3D arguments. It also requires building full support for SAI<o:p></o:p></p>
<p class="MsoNormal">> and supporting the 'directOutput' field. That is a major effort with<o:p></o:p></p>
<p class="MsoNormal">> no obvious purpose that I see in V4.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> You are asking for some serious time support (I think) into<o:p></o:p></p>
<p class="MsoNormal">> an application that is neither fully X3D-compliant, nor<o:p></o:p></p>
<p class="MsoNormal">> DOM-compliant (but the closest to both that is available). At least<o:p></o:p></p>
<p class="MsoNormal">> for me, I do not understand how this effort would further an X3D<o:p></o:p></p>
<p class="MsoNormal">> integrated DOM system. I am quite willing to listen to your reasons<o:p></o:p></p>
<p class="MsoNormal">> and help where I can, but I would like to see where this is going<o:p></o:p></p>
<p class="MsoNormal">> first.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> P.S. Everything above is for client-side code. Server<o:p></o:p></p>
<p class="MsoNormal">> side code can manipulate things as much as it wants to create<o:p></o:p></p>
<p class="MsoNormal">> something that runs in a client-side browser.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> P.P.S. I do think there is a need to JSON encoding in V4<o:p></o:p></p>
<p class="MsoNormal">> subject to the node definition for V4.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Yes, Leonard, for quite some time I have an X3D JSON<o:p></o:p></p>
<p class="MsoNormal">> PROTOtypeExpander.js that works with X3D PROTOs and EXTERNPROTOs and<o:p></o:p></p>
<p class="MsoNormal">> displays in X3DOM. I don’t know how complete it is, and testers<o:p></o:p></p>
<p class="MsoNormal">> are welcome. My EXTERNPROTO expander runs on the server, so is not<o:p></o:p></p>
<p class="MsoNormal">> included in the message, but it is included in the link in the<o:p></o:p></p>
<p class="MsoNormal">> original message. If someone can make the EXTERNPROTO expander<o:p></o:p></p>
<p class="MsoNormal">> work client side that would be great.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> The EXTERNPROTO expander is generally called like:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â json =<o:p></o:p></p>
<p class="MsoNormal">> externPrototypeExpander(outfile, json);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Where json is the parent json of the extern, and outfile<o:p></o:p></p>
<p class="MsoNormal">> is the parent X3D file being loaded (I think Ҡwill probably do<o:p></o:p></p>
<p class="MsoNormal">> in a pinch. I am not sure.). The extern PROTOs will be included<o:p></o:p></p>
<p class="MsoNormal">> in the original JSON as a ProtoDeclare object. You may have to run<o:p></o:p></p>
<p class="MsoNormal">> the flattener afterwards, and it is run as:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â json = flattener(json);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> It removes empty objects from the JSON.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Yes, I would like someone to help me with VRMLScript for<o:p></o:p></p>
<p class="MsoNormal">> X3DOM, if someone is available. I have a very barebones and<o:p></o:p></p>
<p class="MsoNormal">> incorrect implementation here:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/Script.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Please help. I don’t know the X3D event model, and<o:p></o:p></p>
<p class="MsoNormal">> I’m not likely to learn soon. The X3D event model can be<o:p></o:p></p>
<p class="MsoNormal">> emulated in Browser-side JavaScript, but there’s only Cobweb for<o:p></o:p></p>
<p class="MsoNormal">> proof.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> I have another version of flipper.html here that works<o:p></o:p></p>
<p class="MsoNormal">> with X3DOM and Cobweb adding the subscene later. It works with<o:p></o:p></p>
<p class="MsoNormal">> Promises, but the functions still aren’t separated…close, but no<o:p></o:p></p>
<p class="MsoNormal">> cigar. Take a look:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/html/flipper.html<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Sorry, I tend to use the XML version of “Protoâ€, and<o:p></o:p></p>
<p class="MsoNormal">> not the VRML “PROTOâ€.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> X3DJSONLD provides an infrastructure for X3D JSON Browser<o:p></o:p></p>
<p class="MsoNormal">> development, including X3D XML -> X3D JSON conversion on the server,<o:p></o:p></p>
<p class="MsoNormal">> and X3D JSON to X3D XML loading into X3DOM and Cobweb. It also<o:p></o:p></p>
<p class="MsoNormal">> includes conversions from XML DOM to Java and Nashorn JavaScript for<o:p></o:p></p>
<p class="MsoNormal">> X3DJSAIL app development.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> There is definite potential for an XML PROTO expander, as<o:p></o:p></p>
<p class="MsoNormal">> I have written this code, but not seriously tested:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/CompleteXMLPrototypeExpander.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> So far, it’s still server-side. If you’re going to<o:p></o:p></p>
<p class="MsoNormal">> modify it, split it into server and client-side pieces, please.Â<o:p></o:p></p>
<p class="MsoNormal">> Complete is probably a misnomer…<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Thanks,<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Sent from Mail for Windows 10<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> From: Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> Sent: Saturday, May 20, 2017 7:17 PM<o:p></o:p></p>
<p class="MsoNormal">> To: John Carlson; Andreas Plesch; holger.seelig@yahoo.de<o:p></o:p></p>
<p class="MsoNormal">> Cc: x3dom-users@lists.sourceforge.net; X3D Graphics<o:p></o:p></p>
<p class="MsoNormal">> public mailing list<o:p></o:p></p>
<p class="MsoNormal">> Subject: Re: [x3dom-users] Cobweb_dom...Script Magic?<o:p></o:p></p>
<p class="MsoNormal">> Loading DOM subscenesafter parent in X3DOM and Cobweb.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John,<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Cobweb_dom, X3DOM experts, I need some help adding a<o:p></o:p></p>
<p class="MsoNormal">> child DOM scenegraph with prototypes to a parent DOM scenegraph<o:p></o:p></p>
<p class="MsoNormal">> after the<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Not sure how any of this applies to X3DOM as it does not<o:p></o:p></p>
<p class="MsoNormal">> have PROTOs. Assuming you mean X3D prototypes via PROTO or<o:p></o:p></p>
<p class="MsoNormal">> EXTERNPROTO. If you mean something else, please elaborate.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> primary scene has been loaded, and not before. I have<o:p></o:p></p>
<p class="MsoNormal">> an example of loading before the scene is loaded, and in a<o:p></o:p></p>
<p class="MsoNormal">> callback. If you have an example with Promises instead of callback<o:p></o:p></p>
<p class="MsoNormal">> nesting, that would be more ideal, the second $.getJSON() (child<o:p></o:p></p>
<p class="MsoNormal">> scenegraph) might finish before the first $.getJSON() (parent<o:p></o:p></p>
<p class="MsoNormal">> scenegraph) if I don’t use promises or callback nesting. Also,<o:p></o:p></p>
<p class="MsoNormal">> Promises would allow me to separate the parent loading somewhat from<o:p></o:p></p>
<p class="MsoNormal">> the child loading, and create separate functions. Also, X3DOM<o:p></o:p></p>
<p class="MsoNormal">> experts can provide an example with Promises as well. Meanwhile, I<o:p></o:p></p>
<p class="MsoNormal">> will be reading about Promises.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Here is my example so far:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/html/flipper.html<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Viewable here:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://coderextreme.net/X3DJSONLD/src/main/html/flipper.html<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> The white Box is the subscene of the dolphin scene.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> The following related code is from<o:p></o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/loaderJQuery.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> and references code from:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/X3DJSONLD.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> [ actually, I think the last two reference each other<o:p></o:p></p>
<p class="MsoNormal">> – naughty ]<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Data is here:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> [ child scenegraph ]<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/abox.json<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> [ parent scenegraph ]<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/flipp.json<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Cobweb doesn’t need the prototypeExpander or the<o:p></o:p></p>
<p class="MsoNormal">> flattener (well, it might have with prototypes in cobweb_dom, but I<o:p></o:p></p>
<p class="MsoNormal">> think the last release fixed that…haven’t checked—here is a<o:p></o:p></p>
<p class="MsoNormal">> good test for you!). This is a dual example, and I haven’t<o:p></o:p></p>
<p class="MsoNormal">> figured out how to conditionally run the prototypeExpander on only<o:p></o:p></p>
<p class="MsoNormal">> X3DOM code. Please test without the PrototypeExpander.js and<o:p></o:p></p>
<p class="MsoNormal">> Flattener.js included, and remove X3DOM, since it won’t work in<o:p></o:p></p>
<p class="MsoNormal">> that case. X3DOM folks can include the two JavaScript files which<o:p></o:p></p>
<p class="MsoNormal">> are here:<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/PrototypeExpander.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/Flattener.js<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> You may provide your own appendInline (below) which<o:p></o:p></p>
<p class="MsoNormal">> doesn’t call loadSchema. That may be too complex of a download.Â<o:p></o:p></p>
<p class="MsoNormal">> That is, you probably don’t want to do all that JSON schema<o:p></o:p></p>
<p class="MsoNormal">> validation in your example. Try to keep my code close to what it<o:p></o:p></p>
<p class="MsoNormal">> is otherwise.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> And if you start supporting X3D JSON in your viewers,<o:p></o:p></p>
<p class="MsoNormal">> that would be even better!<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> John<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> /**<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ·        Next is passed the element parameter<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ·        */<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> function appendInline(element, url, next) {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â $.getJSON(url, function(json) {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (typeof<o:p></o:p></p>
<p class="MsoNormal">> prototypeExpander === 'function') {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â json =<o:p></o:p></p>
<p class="MsoNormal">> prototypeExpander(url, json, "");<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â } else {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> console.error("Perhaps you need to include the<o:p></o:p></p>
<p class="MsoNormal">> PrototypeExpander.js?");<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â }<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if (typeof flattener ===<o:p></o:p></p>
<p class="MsoNormal">> 'function') {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â json =<o:p></o:p></p>
<p class="MsoNormal">> flattener(json);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â } else {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> console.error("Perhaps you need to include the Flattener.js?");<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â }<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â // must validate here<o:p></o:p></p>
<p class="MsoNormal">> because we call an inner method.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â loadSchema(json, url,<o:p></o:p></p>
<p class="MsoNormal">> doValidate, function() {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> ConvertToX3DOM(json["X3D"]["Scene"], "Scene", element, url);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> next(element);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â }, function(e) {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> console.error(e);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â });<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â }).fail(function(jqXHR, textStatus,<o:p></o:p></p>
<p class="MsoNormal">> errorThrown) { alert('getJSON request failed! ' + textStatus + ' ' +<o:p></o:p></p>
<p class="MsoNormal">> errorThrown); });<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> }<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> /**<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ·        Next is passed the selected element<o:p></o:p></p>
<p class="MsoNormal">> from selector<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ·        Selector is the CSS selector to<o:p></o:p></p>
<p class="MsoNormal">> append inline to.<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ·        */<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> function loadSubscene(selector, url, next) {<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â Â Â Â Â Â Â<o:p></o:p></p>
<p class="MsoNormal">> appendInline(document.querySelector(selector), url, next);<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> }<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> ------------------------------------------------------------------------------Check<o:p></o:p></p>
<p class="MsoNormal">> out the vibrant tech community on one of the world's mostengaging<o:p></o:p></p>
<p class="MsoNormal">> tech sites, Slashdot.org! http://sdm.link/slashdotÂ<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> _______________________________________________X3dom-users mailing<o:p></o:p></p>
<p class="MsoNormal">> listX3dom-users@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/x3dom-usersÂ<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> -- <o:p></o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> 3D Systems & Cloud Consultant<o:p></o:p></p>
<p class="MsoNormal">> LA ACM SIGGRAPH Chair<o:p></o:p></p>
<p class="MsoNormal">> President, Daly Realism - Creating the Future<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> -- <o:p></o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> 3D Systems & Cloud Consultant<o:p></o:p></p>
<p class="MsoNormal">> LA ACM SIGGRAPH Chair<o:p></o:p></p>
<p class="MsoNormal">> President, Daly Realism - Creating the Future<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> -- <o:p></o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> 3D Systems & Cloud Consultant<o:p></o:p></p>
<p class="MsoNormal">> LA ACM SIGGRAPH Chair<o:p></o:p></p>
<p class="MsoNormal">> President, Daly Realism - Creating the Future<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> -- <o:p></o:p></p>
<p class="MsoNormal">> Leonard Daly<o:p></o:p></p>
<p class="MsoNormal">> 3D Systems & Cloud Consultant<o:p></o:p></p>
<p class="MsoNormal">> LA ACM SIGGRAPH Chair<o:p></o:p></p>
<p class="MsoNormal">> President, Daly Realism - Creating the Future<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">> Â<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">--------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> ------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal">> Check out the vibrant tech community on one of the world's most<o:p></o:p></p>
<p class="MsoNormal">> engaging tech sites, Slashdot.org! http://sdm.link/slashdot<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">--------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> _______________________________________________<o:p></o:p></p>
<p class="MsoNormal">> X3dom-users mailing list<o:p></o:p></p>
<p class="MsoNormal">> X3dom-users@lists.sourceforge.net<o:p></o:p></p>
<p class="MsoNormal">> https://lists.sourceforge.net/lists/listinfo/x3dom-users<o:p></o:p></p>
<p class="MsoNormal">><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>