<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>