[x3d-public] X3DJSAIL: Desired chaining methods. Modify return value orprovide new method.

Don Brutzman brutzman at nps.edu
Wed Mar 15 18:14:37 PDT 2017


Yes these were deployed with the last release announcement.  Checkable using javadoc:

	http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/HAnim/HAnimHumanoidObject.html#method.summary

The addChild(X3DChildNode newValue) method is also there from previous work... I will look at adding a variant of addChild for other constructs (X3D statements such as *Proto* etc.) next.

On 3/15/2017 10:20 AM, yottzumm at gmail.com wrote:
> Once append* is deployed, let me know.
>
>
>
> Thanks,
>
>
>
> john
>
>
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>
>
>
> *From: *Don Brutzman <mailto:brutzman at nps.edu>
> *Sent: *Tuesday, March 14, 2017 1:16 PM
> *To: *yottzumm at gmail.com <mailto:yottzumm at gmail.com>
> *Cc: *Roy Walmsley <mailto:roy.walmsley at ntlworld.com>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> *Subject: *Re: X3DJSAIL: Desired chaining methods. Modify return value orprovide new method.
>
>
>
> This turns out to be trickier than first suspected.  The conflicting issue is that the legacy SAI methods use a pattern that returns void (i.e. no value) instead of a copy of the object for subsequent method pipelining.
>
>
>
> So instead of modifying the existing methods, I added "append" methods that take a single child for appending to the subject array.
>
>
>
> http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/HAnim/HAnimHumanoidObject.html#method.summary
>
>
>
> HAnimHumanoidObject                appendJoints(HAnimJoint newValue)
>
>                                                 Append single child joints node to array of existing nodes (if any).
>
> HAnimHumanoidObject                appendSegments(HAnimSegment newValue)
>
>                                                 Append single child segments node to array of existing nodes (if any).
>
> HAnimHumanoidObject                appendSites(HAnimSite newValue)
>
>                                                 Append single child sites node to array of existing nodes (if any).
>
> HAnimHumanoidObject                appendSkeleton(X3DNode newValue)
>
>                                                 Append single child skeleton node to array of existing nodes (if any).
>
> HAnimHumanoidObject                appendSkin(X3DChildNode newValue)
>
>                                                 Append single child skin node to array of existing nodes (if any).
>
> HAnimHumanoidObject                appendViewpoints(HAnimSite newValue)
>
>                                                 Append single child viewpoints node to array of existing nodes (if any).
>
>
>
> Similar methods appear elsewhere for appending a single node to an MFNode array field.
>
>
>
> For clarity and to have a consistent pattern (which helps code generators like yours)
>
> we should probably change utility methods like "addChild" to "appendChild" throughout.
>
> What do you think?
>
>
>
> Specification considerations noted as follows:
>
>
>
> X3dJavaSpecificationChangesAndIssues.txt                             14 March 2017
>
> http://www.web3d.org/x3d/stylesheets/java/X3dJavaSpecificationChangesAndIssues.txt
>
> ============================================================
>
> 3. SFNode/MFNode return types void
>
>
>
> Numerous interface return types are void, preventing a method from returning the
>
> current object from returning a copy of itself to permit method pipelining.
>
>
>
> Various utility methods have been added (typically named append* instead of add*)
>
> in order to circumvent this restriction.
>
>
>
> Need to consider changing SFNode/MFNode return signatures to support pipelining.
>
> Of note is that a method returning a null value is essentially the same as a
>
> void return, so no loss of functionality seems involved with this approach.
>
>
>
> ============================================================
>
> On 3/10/2017 1:14 PM, yottzumm at gmail.com wrote:
>
>> Maybe all these methods of HAnimHumanoiObject should return an HAnimHumanoidObject for chaining:
>
>>
>
>>
>
>>
>
>>         public void addJoints(HAnimJoint newValue)
>
>>
>
>>         public void addJoints(X3DNode[] newValue)
>
>>
>
>>         public void addSegments(HAnimSegment newValue)
>
>>
>
>>         public void addSegments(X3DNode[] newValue)
>
>>
>
>>         public void addSites(HAnimSite newValue)
>
>>
>
>>         public void addSites(X3DNode[] newValue)
>
>>
>
>>        public void addSkeleton(X3DNode newValue)
>
>>
>
>>         public void addSkeleton(X3DNode[] newValue)
>
>>
>
>>         public void addSkin(X3DChildNode newValue)
>
>>
>
>>         public void addSkin(X3DNode[] newValue)
>
>>
>
>>         public void addViewpoints(HAnimSite newValue)
>
>>
>
>>         public void addViewpoints(X3DNode[] newValue)
>
>>
>
>> John
>
>
>
> all the best, Don
>
> --
>
> Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
>
> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
>
> X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
>
>
>


all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman



More information about the x3d-public mailing list