<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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.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;}
/* List Definitions */
@list l0
        {mso-list-id:1741901111;
        mso-list-type:hybrid;
        mso-list-template-ids:-635550482 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Given the extreme craft needed for that class, there is no way we want to expose it to end users.</li></ul><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>… there is no way we want to expose it to end users<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Do end users get cut off at some point? That means open development stops at some wall? <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In any open tool, even the most extreme coding used for implementation must be competently documented, with no black box code, for use by other open implementations. The ‘end user’ is, of course, us.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>add nodes and fields ... support needs to be included through manual programming.  <o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please tell me more about this manual programming thing in hanim motion.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks and Great thinking and work on all this,<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><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></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:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Sent: </b>Thursday, January 17, 2019 5:28 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:aono@tut.jp">aono@tut.jp</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] X3DGroupingNode interface has no method setIS inX3DJSAIL, FYI</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 1/14/2019 12:32 PM, John Carlson wrote:</p><p class=MsoNormal>> I there any desire to add methods on the fly in Java, instead of having them in a declared API?  See Java Proxy class.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Indeed there is a lot of capability in Java for this kind of thing, it's called reflection.  Proxy is part of that.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>              The Java™ Tutorials ,Trail: The Reflection API</p><p class=MsoNormal>              https://docs.oracle.com/javase/tutorial/reflect</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This is quite involved, both powerful and brittle if content being reflected into object classes and methods is imperfect.  I found the following book to be excellent and essential:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>              Java Reflection in Action</p><p class=MsoNormal>              Ira R. Forman and Nate Forman, October 2004</p><p class=MsoNormal>              https://www.manning.com/books/java-reflection-in-action</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Reflection is used in X3DLoaderObjectclass, which parses an XML document using DOM and then traverses to create X3DJSAIL objects.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>              http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DLoaderObject.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This was one of the harder parts of X3DJSAIL development.  I thought it was pretty good until we started pushing the 300+ X3D Examples Archives scenes through it, that uncovered a lot of overlooked cases which were then fixable.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As we add nodes and fields to X3Dv4 (such as HAnimMotion) support needs to be included through manual programming.  Given the extreme craft needed for that class, there is no way we want to expose it to end users.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That said, X3DJSAIL is strictly Plain Old Java Objects (POJO) so Java programmers can do anything they want.  X3D simply becomes a utility library capability.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Have fun with X3D and Java!</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>x3d-public mailing list</p><p class=MsoNormal>x3d-public@web3d.org</p><p class=MsoNormal>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>