Bug 1330 - Bug fixes required to ensure a full compile() works
Summary: Bug fixes required to ensure a full compile() works
Alias: None
Product: Java3D
Classification: General
Component: core (show other bugs)
Version: 2.4.0
Hardware: All all
: P4 normal
Assignee: Phil Jordan
Depends on:
Reported: 2016-10-20 00:05 CEST by Phil Jordan
Modified: 2019-03-29 14:19 CET (History)
1 user (show)

See Also:
SCM Refs:
Workaround: ---


Note You need to log in before you can comment on or make changes to this bug.
Description Phil Jordan 2016-10-20 00:05:02 CEST
TransformGroupRetained want's isStatic to be true in order for 
compile to agree to merge transforms.
However (madly) Node calls set default read capabilities 
and NodeRetained isStatic check against the long read list
This is captured separately in Bug 1329

It appears that compile does not get called when a BranchGroup becomes live, you MUST call it yourself manually, not in line with the doc, so I'm not sure what the answer to this is, other than to call compile in the doSetLive method, but that may have consequences

In order for shapes to be merged properly this must be changed from ==
the first line of Shape3DRetained
boolean isEquivalent(Shape3DRetained shape) {
Must be changed from this
if (this.appearance != shape.appearance ||
if (!this.appearance.equals(shape.appearance) ||

Also implement the equals method in ShaderAttributeArray and ShaderAttributeValue to make the above call work correctly for all appearances

setPickable(false) is required on all shapes as Group are already false, but Nodes are true! so it won't flow don't from the root Groups

Shape3DRetained.staticXformCanBeApplied() {
This (for mirror) is used wrongly
if (isPickable || collidable ||
and should be this
if (pickable || collidable ||
Comment 1 Phil Jordan 2016-11-02 01:54:32 CET
In 1.7.0