Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback, please email oracle-forums_moderators_us@oracle.com

GeometryUpdater

843799Jun 20 2001 — edited Jun 25 2001
Having trouble figuring out how to get update with GeometryUpdater to work.
I get the following error:
Exception: GeometryArray: no capability to update geometry data javax.media.j3d.CapabilityNotSetException: GeometryArray: no capability to update geometry data
at javax.media.j3d.GeometryArray.updateData(GeometryArray.java:580)
at mooseanalysis.Track.update(Track.java:61)

Attached is a clip of my code. I have enabled many ALLOW parameters in an attempt to get this to work.

thanks,
mike


public class Track extends Shape3D{
Point3f[] coords = new Point3f[12000];
Point3f lineCoordsLocal= new Point3f();
int coordsLength = 0;
int[] mapSize = new int[1];
Map lineMap = new TreeMap();
// LineStripArray lsa;
LineArray lsa;
int id;
public Track(int elementId) {
super();
super.setCapability(super.ALLOW_GEOMETRY_WRITE);
mapSize[0] = 0;
id = elementId;
}

public void update (double time, Point3f lineCoords) {
lineCoordsLocal = lineCoords;
if (mapSize[0] > 0) {
if (mapSize[0] == 1) {
coords[coordsLength] = lineCoords;
mapSize[0] = ++coordsLength;
System.out.println(mapSize[0]);
lsa = new LineArray(mapSize[0],
LineArray.COORDINATES |
LineArray.BY_REFERENCE);
lsa.setCapability(lsa.ALLOW_REF_DATA_WRITE |
lsa.ALLOW_REF_DATA_READ |
lsa.ALLOW_COUNT_WRITE |
lsa.ALLOW_COUNT_READ |
lsa.ALLOW_COORDINATE_WRITE |
lsa.ALLOW_COORDINATE_READ |
lsa.ALLOW_FORMAT_READ
);
lsa.setCoordRef3f(coords );
super.setGeometry(lsa);
}
else {
lsa.updateData(new GeometryUpdater() {
public void updateData(Geometry geometry) {
coords[coordsLength] = coords[coordsLength-1];
coords[++coordsLength] = lineCoordsLocal;
mapSize[0] = ++coordsLength;
}
});
}
}
else {
coords[coordsLength] = lineCoords;
mapSize[0] = ++coordsLength;
}

//This works but is very slow so I don't want to
//do it this way, just left it here for reference
/* coords[coordsLength++] = lineCoords;
mapSize[0] = coordsLength;
if (mapSize[0] > 1) {
lsa = new LineStripArray(mapSize[0],
GeometryArray.COORDINATES |
GeometryArray.BY_REFERENCE, mapSize);
lsa.setCapability(GeometryArray.ALLOW_REF_DATA_WRITE | GeometryArray.ALLOW_COUNT_WRITE);
lsa.setCoordRef3f(coords );
super.setGeometry(lsa);
}
*/
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 23 2001
Added on Jun 20 2001
1 comment
82 views