<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=utf-8"><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"><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></body></html>