I have method UpdateMyData, where I use external data from another class for updating geom[i]. I call it from another class. But the result is bad - only one surface updates. What is wrong from your point of view?
For clearness:
So, I call method:
...
for(int s =0; s<ldr.listOfSurfaces.size();s++) sh3d.UpdateMyData(s, ldr.getCoordsFace(), ldr.getCoordsFaceXYZ());
view.renderOnce();
...
The body of method is:
public void UpdateMyData(int getSurface, int[] getCoordsFace,int[][][] faces) {
System.out.println("Updating data...");
final int TMPsurff/*getSurface*/ = getSurface;
final int[] TMPgetCoordsFace = getCoordsFace;
final int[][][]TMPfaces = faces;
geom[TMPsurff].updateData(new GeometryUpdater() {
public void updateData(Geometry geometry) {
System.out.println("Surff is: " + TMPsurff+" ");
//проходим через все фейсы
for(int ff = 0; ff<(TMPgetCoordsFace[TMPsurff]); ff++){
//point
geom[TMPsurff].setCoordinate((ff*3)+2,
new Point3f(
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][0])))[0],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][0])))[1],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][0])))[2]));
geom[TMPsurff].setCoordinate((ff*3)+1,
new Point3f(
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][1])))[0],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][1])))[1],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][1])))[2]));
geom[TMPsurff].setCoordinate((ff*3)+0,
new Point3f(
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][2])))[0],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][2])))[1],
((float[])(((ArrayList)listOfSurff.get(TMPsurff)).get(TMPfaces[TMPsurff][ff][2])))[2]));
}
}
});
}
public void updateData(Geometry geometry) {
// only for:The type shape3dcreator must implement the inherited abstract method GeometryUpdater.updateData(Geometry)
}

