Bug 1330

Summary: Bug fixes required to ensure a full compile() works
Product: Java3D Reporter: Phil Jordan <p.j.nz>
Component: coreAssignee: Phil Jordan <p.j.nz>
Severity: normal CC: gouessej
Priority: P4    
Version: 2.4.0   
Hardware: All   
OS: all   
Type: DEFECT SCM Refs:
Workaround: ---

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