A few little bugs I spotted while exploring the world of Xith:
SkyBoxThe SkyBox shows unpleasant lines at the edges of the cube:
The SkyBox.createTexturesArray() method should force the texture boundary modes to CLAMP_TO_EDGE to avoid this:
for( Texture t : textures )
{
t.setBoundaryModeS( Texture.CLAMP_TO_EDGE );
t.setBoundaryModeT( Texture.CLAMP_TO_EDGE );
}
Ah that's looking much better
SkyGeoHemisphereThe SkyGeoHemisphere shows some really ugly texture mapping when you turn your head back:
I didn't find any workaround for this one, as it seems that you cannot use spherical mapping with one rectangular texture onto a GeoSphere: the texture will wrap the wrong way between 1-d and d in the triangles that cross the texture boundary.

Have a look at the page
http://www.vterrain.org/Textures/spherical.html, there are information on how to to texture mapping on an icosahedron, it seems rather simple at first glance (well their solution uses 10 textures, but we are already using 6 for the SkyBox).
RectBillboardThe resize() method inherited from the superclass Rectangle doesn't work. This is because the RectBillboard.zeroVertices attribute is not updated when resize() is called. One solution would be to overwrite the adequate resize() method in RectBillboard to update zeroVertices, but as zeroVertices seems to be a copy of the Rectangle.vertices attribute, there could be maybe a better solution: protected access, getter method... well I'll let the developpers find the best solution.
LODSwitchFor this one, I am not sure if it's a bug. However here's what I did find: when the LODSwitch computes the distance to choose the LOD, it computes the distance between the viewPosition and the world origin at (0;0;0). That's nice in the test example, but if I put the LODSwitch into a TransformGroup to translate/rotate my geometry somewhere far away from the origin, it seems to change LOD according to how far away is my camera from the origin, and not to how far away is my camera from my shape.
To work around this behaviour, I created my own sublass of LODSwitch, where I store the coordinates of the center of my LODSwitch, and where updateWhichChild() is overriden. This works for me but there is maybe a cleaner solution.
Well that's all for now, the post begins to be too long.
