<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 confirmed that the override is there, and it is set to setMaterial.  So there’s no current way to addShaders, since I believe that setMaterial is the most common containerField.  How does X3dToJava.xslt handle this choice for containerFields?  We can discuss this at the meeting tomorrow at 2pm PST, but this is likely a widespread problem with mapToMethod*.js</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The parent element is Appearance, and the ProtoInstance is the child.  How can we automatically choose either setMaterial or addShaders?  Do I need to look at the ProtoBody?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Does this have something to do with ExternProtoDeclare validation?  Would X3DUOM resolve it if I just looked closer (and put it in mapToMethod.js which is autogenerated?)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Seems like we’re getting to some really gnarly bugs which require looking at the scenegraph or extended scenegraph in more detail.</p><p class=MsoNormal><br>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</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</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>Tuesday, October 16, 2018 9:01 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>X3DJSAIL, possible bug in JS generation</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It looks like the JS generation (JavaScriptSerializer.js) may have an issue with addShaders being<o:p></o:p></p><p class=MsoNormal>generated for ProtoInstanceObject’s. This happens when mapToMethod2.js has no override for the ProtoInstance child I think, but<o:p></o:p></p><p class=MsoNormal>I will check soon.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here is the JS code:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>coderextreme@DESKTOP-DOPK2VD MINGW64 /c/x3d-code/www.web3d.org/x3d/stylesheets/java/nashorn/examples<o:p></o:p></p><p class=MsoNormal>$ grep addShaders *<o:p></o:p></p><p class=MsoNormal>HelloWorldProgramOutput.Nashorn.js:            .addShaders(new ProgramShaderObject().setDEF("TestShader1")<o:p></o:p></p><p class=MsoNormal>HelloWorldProgramOutput.Nashorn.js:            .addShaders(new ComposedShaderObject().setDEF("TestShader4")<o:p></o:p></p><p class=MsoNormal><br>Here is the original Java code:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>HelloWorldProgram.java:                        .addShaders(new ProgramShaderObject("TestShader1")<o:p></o:p></p><p class=MsoNormal>HelloWorldProgram.java:                        .addShaders(new ProtoInstanceObject("ShaderProto","TestShader3"))<o:p></o:p></p><p class=MsoNormal>HelloWorldProgram.java:                        .addShaders(new ComposedShaderObject("TestShader4")<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 the generated Java code:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>HelloWorldProgramOutput.java:        .addShaders(new ProgramShaderObject()<o:p></o:p></p><p class=MsoNormal>HelloWorldProgramOutput.java:        .addShaders(new ProtoInstanceObject("ShaderProto", "TestShader3"))<o:p></o:p></p><p class=MsoNormal>HelloWorldProgramOutput.java:        .addShaders(new ComposedShaderObject()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>