<div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Dear Myeong,<br></div><div><br></div><div>Thank you for progress on C++ SAI. Your new examples have helped! I have been able to compile around ~50 more files to .obj's! There are approximately ~70 more of my examples to compile. Progress!</div><div>============================================================================</div><div>I have a few things that popped up when compiling. ShaderPart does not have a setDEF method, but the X3D tooltips says it does.</div><div><br></div><div><a href="https://www.web3d.org/x3d/content/X3dTooltips.html#ShaderPart" target="_blank">https://www.web3d.org/x3d/content/X3dTooltips.html#ShaderPart</a><br></div><div><br></div><div>Here's an example:</div><div><br></div><div><div>ballx3dom.cpp</div><div>ballx3dom.cpp(186): error C2039: 'setDEF': is not a member of 'ShaderPart'</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Concretes.h(2344): note: see declaration of 'ShaderPart'</div></div><div><br></div><div>Here's the related code:</div><div><br></div><div><div>ShaderPart* ShaderPart40 = new ShaderPart();</div><div>ShaderPart40->setDEF(CString("common"));</div><div>ShaderPart40->setUrl(new CString[2]{CString("../shaders/common.fs"), CString("<a href="https://coderextreme.net/X3DJSONLD/src/main/shaders/common.fs" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/shaders/common.fs</a>")}, 2);</div><div>ShaderPart40->setType(CString("FRAGMENT"));</div></div><div>============================================================================</div><div>I'm also having problems with code like this (see last line where I dereference the pointer).</div><div><br></div><div><div>ComposedCubeMapTexture* ComposedCubeMapTexture25 = new ComposedCubeMapTexture();</div><div>ComposedCubeMapTexture25->setDEF(CString("texture"));</div><div>ImageTexture* ImageTexture26 = new ImageTexture();</div><div>ImageTexture26->setUrl(new CString[2]{CString("../resources/images/all_probes/stpeters_cross/stpeters_back.png"), CString("<a href="https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_back.png" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_back.png</a>")}, 2);</div><div>ComposedCubeMapTexture25->setBack(*ImageTexture26);</div></div><div><br></div><div><div>bub.cpp(115): error C2280: 'X3DTexture2DNode::X3DTexture2DNode(const X3DTexture2DNode &)': attempting to reference a deleted function</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(4542): note: compiler has generated 'X3DTexture2DNode::X3DTexture2DNode' here</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(4542): note: 'X3DTexture2DNode::X3DTexture2DNode(const X3DTexture2DNode &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'X3DTextureNode::X3DTextureNode(const X3DTextureNode &)'</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(4380): note: 'X3DTextureNode::X3DTextureNode(const X3DTextureNode &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'X3DAppearanceChildNode::X3DAppearanceChildNode(const X3DAppearanceChildNode &)'</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(1801): note: 'X3DAppearanceChildNode::X3DAppearanceChildNode(const X3DAppearanceChildNode &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'X3DNode::X3DNode(const X3DNode &)'</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(1777): note: 'X3DNode::X3DNode(const X3DNode &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'X3DBaseNode::X3DBaseNode(const X3DBaseNode &)'</div><div>C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\languages\cpp\Examples_X3DForWebAuthors\Chapter06\IndexedFaceSetExample\include\Abstracts.h(1717): note: 'X3DBaseNode::X3DBaseNode(const X3DBaseNode &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'CObject::CObject(const CObject &)'</div></div><div>============================================================================</div><div><br></div><div>You'll want to add HAnimMotion and Loa for HAnim V2.0, I am not sure when! Please consider the HumanoidAnimation a medium priority for testing.</div><div><br></div><div><div>KoreanCharacterMotionAnnexD01Jin.cpp(1060): error C2065: 'HAnimMotion': undeclared identifier</div><div>KoreanCharacterMotionAnnexD01Jin.cpp(1067): error C2039: 'addMotions': is not a member of 'HAnimHumanoid'</div></div><div><br></div><div>HAnimModelHandRight.cpp(132): error C2039: 'setLoa': is not a member of 'HAnimHumanoid'<br></div><div>============================================================================</div><div>Thanks for looking at this! I hope I am not being annoying!</div><div><br></div><div>Sincerely,</div><div><br></div><div>John</div></div></div></div></div></div></div></div></div></div></div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 28, 2024 at 8:07 PM Myeong Won Lee <<a href="mailto:myeongwonlee@gmail.com" target="_blank">myeongwonlee@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dear John,</div><div><br></div><div>I am sorry for my silence about your emails from March 6 to 20.</div><div>I was very busy with other matters.</div><div>I will check and examine all of your emails about 19777-3, 4, and 5 one by one.</div><div>I have uploaded many examples about the X3D_For_WebAuthors resources yesterday. Please see the updates in the folders of Examples_X3DForWebAuthors" in the cpp and csharp directories.</div><div><br></div><div><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/</a><br></div><div><br></div><div>For C, we are updating previous C examples that we have developed. For C++ and C#, we implemented them using Visual C++, and for C, we are now converting and implementing many examples by Linux C. I will upload the updated C examples later when ready. </div><div><br></div><div>Sincerely,</div><div><br></div><div>Myeong</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 20, 2024 at 10:49 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Dear Myeong,</div><div dir="auto"><br></div><div dir="auto">I have a lot of TimeSensor code in my projects, and a fake TimeSensor API declaration, perhaps fixing the setDEF, would be better sooner than a full scale browser SAI implementation and tons of examples. I already have 50 examples which compile to .obj.</div><div dir="auto"><br></div><div dir="auto">In other words, I value that you are doing building test cases. If you can prioritize C++ examples over C and C#, that would help with collaboration. I do know editing a stylesheet or two is difficult.</div><div dir="auto"><br></div><div dir="auto">I am trying it easier to produce solid APIs using something derived from X3DUOM, essentially X3DUOM plus AOP “advice” for various operations, <div dir="auto"><a href="https://www.baeldung.com/spring-aop-advice-tutorial" target="_blank">https://www.baeldung.com/spring-aop-advice-tutorial</a> , dropping binding source code directly into X3DUOM behavior both structural, which I call the X3D Extended Object Model (X3DEOM). This can hopefully be used with a SAX Parser and less complicated stylesheets, perhaps making the API generation cross-binding language, with behavioral code in each binding language EOM. Hopefully the behavioral part of EOM can be created with stylesheets or parser-generators IDK. An X3D “SAX-Like” Parser has already been created for creating skeleton advice in X3DEOM from X3DUOM.</div><div dir="auto"><br></div><div dir="auto">My target API will first be ECMAScript, followed by TypeScript.</div><div dir="auto"><br></div><div dir="auto">What I will do in the short term is create a sample C++ API for TimeSensor such that my programs will compile and try to send you a copy.</div><div dir="auto"><br></div><div dir="auto">I know diamond class inheritance problems are difficult!</div><div dir="auto"><br></div><div dir="auto">Sincerely,</div><div dir="auto"><br></div><div dir="auto">John </div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 17, 2024 at 1:27 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Dear Myeong,</div><div><br></div><div>Here is one C++ example (I'm not saying I'm necessarily coding right) that I'm having issues with. Setting X3DNode to a virtual base class of the subclasses created other issues, but your careful eyes on this would be great.</div><div><br></div><div>bubbles.cpp</div><div>bubbles.cpp(73): error C2385: ambiguous access of 'setDEF'</div><div>bubbles.cpp(73): note: could be the 'setDEF' in base 'X3DNode'</div><div>bubbles.cpp(73): note: or could be the 'setDEF' in base 'X3DNode'</div><div><br></div><div><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/cplusplus/net/coderextreme/data/Bubbles.cpp" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/cplusplus/net/coderextreme/data/Bubbles.cpp</a><br></div><div><br></div><div>Here's the excerpted code that's failing:</div><div><br></div><div><div>TimeSensor* TimeSensor14 = new TimeSensor();</div><div>TimeSensor14->setDEF(CString("BubbleClock"));</div><div>TimeSensor14->setCycleInterval(6);</div><div>TimeSensor14->setLoop(True);</div></div><div><br></div><div>I've tried without the CString.</div><div><br></div><div>I probably could use an update to cl.exe. Please try on your system! If you have a set of includes available that you like to use, and work for this case, please let me know the locations on sourceforge, there are many to choose from! I am cherry picking the .h files in: <a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample</a> on the x3d project on sourceforge.</div><div><br></div><div>Sincerely,</div><div><br></div><div>John</div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 17, 2024 at 12:38 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Dear Myeong,</div><div dir="ltr"><br></div><div dir="ltr">I've gotten 1/3 of my C++ examples compiling, not without some difficulties.<br><div><br></div><div>Here are changes I've made to support some version of the .h files:</div><div><br></div><div>// replace addChildren with addChild</div><div><br></div><div><div> if (method.indexOf("addChildren") >= 0) {</div><div> method = method.replace("Children", "Child");</div><div> }</div><div>// replace ImageTexture methods (I don't know if I have the current .h files)</div><div><br></div><div> if (element.nodeName !== "TextureBackground") {</div><div> method = method.replace("setTopTexture", "setTop");</div><div> method = method.replace("setBottomTexture", "setBottom");</div><div> method = method.replace("setFrontTexture", "setFront");</div><div> method = method.replace("setBackTexture", "setBack");</div><div> method = method.replace("setLeftTexture", "setLeft");</div><div> method = method.replace("setRightTexture", "setRight");</div><div> }</div><div><br></div><div>// addParts is desirable, if you can make the change. Or I can change addParts to addChild</div><div> method = method.replace("addParts", "setParts"); // TODO, need addParts, or collect in array</div><div><br></div><div>// The methods were not available, or there was some type conflict, so use addChild.</div><div> method = method.replace("addFieldValue", "addChild");</div><div> method = method.replace("addField", "addChild");</div><div> method = method.replace("addJoints", "addChild");</div><div> method = method.replace("addDisplacers", "addChild");</div><div> method = method.replace("addConnect", "addChild");</div><div> method = method.replace("addComponent", "addChild");</div><div> method = method.replace("addShaders", "addChild");</div><div> method = method.replace("setShape", "addChild");</div><div> method = method.replace("setProtoInterface", "addChild");</div><div> method = method.replace("setProtoBody", "addChild");</div><div> method = method.replace("setIS", "addChild");</div><div> method = method.replace("setAppearance", "addChild");</div><div> method = method.replace("setMaterial", "addChild");</div><div> method = method.replace("setCoord", "addChild");</div><div> method = method.replace("setColor", "addChild");</div><div> method = method.replace("setProxy", "addChild");</div><div> method = method.replace("setTexCoord", "addChild");</div><div> method = method.replace("setTextureTransform", "addChild");</div><div> if (method.endsWith("setTexture")) {</div><div> method = method.replace("setTexture", "addChild");</div><div> }</div></div><div><br></div><div>Here are the includes I am currently using:</div><div><br></div><div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/SphereExample/pch.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/SphereExample/pch.h</a>"</div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/SphereExample/framework.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/SphereExample/framework.h</a>"</div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/XML_PARSER.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/XML_PARSER.h</a>"</div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/X3DLib.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/X3DLib.h</a>"</div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/glMath.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/glMath.h</a>"</div><div>#include "C:/x3d-code/<a href="http://www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/glut.h" target="_blank">www.web3d.org/x3d/languages/cpp/Examples_X3DForWebAuthors/Chapter02/SphereExample/include/glut.h</a>"<br></div></div><div><br></div><div>If you have a better set, let me know.</div><div><br></div><div>Here are my current set of .cpp files: <a href="https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/cplusplus/net/coderextreme/data" target="_blank">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/cplusplus/net/coderextreme/data</a> (some may be out of date).</div><div><br></div><div>Here are the ones that compile:</div><div><br></div><div><div>abox.obj</div><div>app.obj</div><div>ArchHalf.obj</div><div>ArchPrototype.obj</div><div>ArtDecoPrototypes.obj</div><div>asmallbox.obj</div><div>asphere.obj</div><div>asteroids.obj</div><div>BoxEm.obj</div><div>BoxEm2.obj</div><div>Bushes.obj</div><div>CameraShape.obj</div><div>Cane.obj</div><div>CoordinateAxes.obj</div><div>DesignPatternsApparelMedicalSkinLayers.obj</div><div>ExtrusionHeart.obj</div><div>freewrlflowers.obj</div><div>glflowers.obj</div><div>HelloWorld.obj</div><div>HelloWorldCommented.obj</div><div>HelloWorldMinimal.obj</div><div>IcosahedronSubdivisionLevel5.obj</div><div>IFS.obj</div><div>indexedfaceset_pixeltexture_entire.obj</div><div>indexedfaceset_pixeltexture_part.obj</div><div>indexedfaceset_pixeltexture_plus.obj</div><div>indexedfaceset_pixeltexture_whole.obj</div><div>JointCoordinateAxes.obj</div><div>jumpcut_loadurl.obj</div><div>KoreanCharacter01Jin.obj</div><div>KoreanCharacter02Chul.obj</div><div>KoreanCharacter03Hyun.obj</div><div>KoreanCharacter04Young.obj</div><div>KoreanCharacter05Ju.obj</div><div>KoreanCharacter06Ga.obj</div><div>KoreanCharacter07No.obj</div><div>KoreanCharacter08Da.obj</div><div>KoreanCharacter09Ru.obj</div><div>KoreanCharacter10Mi.obj</div><div>KoreanCharacter11Min.obj</div><div>KoreanCharacter12Sun.obj</div><div>MainStage.obj</div><div>Marine.obj</div><div>MaskAndSnorkel.obj</div><div>Pathway.obj</div><div>plainflowers.obj</div><div>qq3.obj</div><div>rgb_alpha.obj</div><div>rubik.obj</div><div>rubikFurnace.obj</div><div>rubikOnFire.obj</div><div>ScubaTank.obj</div><div>StringArrayEncodingExamples.obj</div><div>TextExamples.obj</div><div>ThreeDTexture.obj</div><div>ViewFrustumExample.obj</div><div>ViewFrustumPrototype.obj</div><div>x3domflowers.obj</div></div><div><br></div><div>Many of the remaining problems involve ambiguity in the base class (diamond class problem?) which I have forgotten how to fix, but I will look it up.</div><div><br></div><div>John</div></div></div></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"></div></div></div></div></div></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><p class="MsoNormal" align="left" style="margin-bottom:0cm;line-height:10pt;background-image:initial;background-position:initial;background-repeat:initial;word-break:keep-all"><font face="arial, sans-serif" size="1">Myeong Won Lee, PhD, CEO</font></p><p class="MsoNormal" align="left" style="margin-bottom:0cm;line-height:10pt;background-image:initial;background-position:initial;background-repeat:initial;word-break:keep-all"><font face="arial, sans-serif" size="1">VRSTA Inc.</font></p><p class="MsoNormal" align="left" style="margin-bottom:0cm;line-height:10pt;background-image:initial;background-position:initial;background-repeat:initial;word-break:keep-all"><font face="arial, sans-serif" size="1">GwangPyeong-ro 56-Gil 8-13</font></p><p class="MsoNormal" align="left" style="margin-bottom:0cm;line-height:10pt;background-image:initial;background-position:initial;background-repeat:initial;word-break:keep-all"><font face="arial, sans-serif" size="1">Gangnam-gu, Seoul, 06367, Korea</font></p><p class="MsoNormal" align="left" style="margin-bottom:0cm;line-height:10pt;background-image:initial;background-position:initial;background-repeat:initial;word-break:keep-all"><font face="arial, sans-serif" size="1">E-mail) <a href="mailto:myeongwonlee@gmail.com" target="_blank">myeongwonlee@gmail.com</a>, <a href="mailto:mwlee@suwon.ac.kr" target="_blank">mwlee@suwon.ac.kr</a></font></p></div></div></div></div></div></div></div></div>
</blockquote></div>
</div>