Wow ! What a mess !
I just dug into Xith javadoc, and ehhh there’s a lot of packages, and some of them deprecated, bad-named, duplicated… some classes are not in the good packages (IMHO) and… eh there’s a lot of work.
Here is the list of packages and my comments
Collision System :
com.xith3d.collider
com.xith3d.collider.forces
These should be placed in a separate jar, I think. It’s now broken, buggy and incomplete
com.xith3d.common
Package name could be clearer. It contains only one class, SystemHelper, which is used for debug messages !!! Should be removed if not used. If it is, should be renamed OR moved.
com.xith3d.datatypes
Nothing to say, except that there’s no naming conventions. One is named ExtSomething3f and another Something4f. I’d say, all ExtSomething or all Something, but not two conventions
com.xith3d.gui
The DisplayOptions class seems completely useless… it justs contains two fields : USE_JAVA3D_ENGINE or USE_XITH_ENGINE. Don’t see the use here.
com.xith3d.image
com.xith3d.imaging
I’d like to see the difference here… In fact xith3d.image is for “pixel processing” and imaging is in fact some image loaders. I don’t understand their use… I thought it was java.io (or any JDD class) that was doing the image loading job ?
com.xith3d.io
Totally unknown package. I didn’t know Xith was an I/O library !! I think it’s outdated and should be removed.
com.xith3d.loaders
com.xith3d.loaders.ase
com.xith3d.loaders.texture
The xith3d.loaders package contains some strange classes (Loader and Scene) that seems not to be used. I don’t what we should do about them.
I don’t understand why the ASE loader is part of the core, and not the OBJ, MD2, 3DS, and COLLADA ones.
com.xith3d.occluder
So we have occluder culling ? I thought it was broken…
com.xith3d.picking
Arne’s classes for advanced picking would be welcome here
com.xith3d.render
com.xith3d.render.jogl
com.xith3d.render.lwjgl
Seems OK
com.xith3d.render.lwjgl.test
Should be com.xith3d.test.render.lwjgl
com.xith3d.scenegraph
Contains far too much classes IMHO. Creating sub-packages seems a good idea.
com.xith3d.scenegraph.behavior
Should be com.xith3d.behavior and, in fact should even be external to Xith3D. I didn’t know Xith3D was a behavoring library either. And some behavior classes are in the toolkit, IIRC
com.xith3d.scenegraph.utility
com.xith3d.scenegraph.utility.general
Packages name not clear… After investigations, utility contains a timer (should then be in com.xith3d.timer, or external to the core) and utility.general contains some comparator thingies I never heard of before.
com.xith3d.sound
com.xith3d.sound.drivers.javasound
com.xith3d.sound.drivers.joal
com.xith3d.sound.loaders
Seems right.
com.xith3d.spatial
com.xith3d.spatial.bounds
com.xith3d.spatial.clipping
com.xith3d.spatial.octree
com.xith3d.spatial.octree.triangle
com.xith3d.spatial.spheretree
Is it used ? Is frustum culling functional ? (We don’t have test cases for occlusion and frustum culling)
com.xith3d.terrain
Javadoc filled with “Created with IntelliJ IDEA” ;D And seems magicosm-specific. Well I didn’t succeeded to figure out what it was doing exactly.
com.xith3d.test
com.xith3d.test.lesson37vs
com.xith3d.test.tcm
.test ok, but .lesson37vs and .tcm don’t need seperate package ! or we must be doing sepearate packages for everything ! (model and texture loaders, renderers, lighting, and so on.) Test cases don’t need to have “Xith3D” at the beginning of their name
com.xith3d.transients
Classes should be in datatypes
com.xith3d.userinterface
What’s the difference with xith3d.gui ?
com.xith3d.utilities
Useless, contains one class only, the “ModelRenderer”, that renders a simple cube. Should be removed.
com.xith3d.utility.cache
Don’t understand what it’s used for
com.xith3d.utility.cmdline
What’s the use ? And the syntax of the comand-line commands ?
com.xith3d.utility.events
What does this has to do with Xith ? Is it used somewhere ?
com.xith3d.utility.exception
Useless, contains one class, Check, that checks wether a value is true or false… To be removed
com.xith3d.utility.general
To be splitted in utility.math & utility.compression. And the ZipUtility shouldn’t be in Xith3D (and the JDK, IIRC, has classes that does that job)
com.xith3d.utility.geometry
com.xith3d.utility.geometry.nvtristrip
Is it used ? Classes with unclear names
com.xith3d.utility.image
Classes with unclear names
com.xith3d.utility.interpolate
OK
com.xith3d.utility.logs
OK, but don’t we use an external lib for logging (Log4j / java.util.logger ?)
com.xith3d.utility.memory
OK
com.xith3d.utility.noise
OK
com.xith3d.utility.profile
Seems OK
com.xith3d.utility.properties
Hmm… is this serialization ?
org.xith3d.geometry
Some classes’ names to be changed for the sake of clarity, and conventions to be defined for geometric primitives
org.xith3d.loader3ds
org.xith3d.loader3ds.chunks
org.xith3d.loader3ds.data
OK
org.xith3d.loaders.md2
org.xith3d.loaders.md2.util
org.xith3d.loaders.md2.util.cio
org.xith3d.loaders.md2.util.pak
org.xith3d.loaders.md2.util.pcx
OK, but for PCX loading shouldn’t it be handled elsewhere ? And do we need all these packages ?
org.xith3d.loaders.obj
OK
org.xith3d.loaders.tds
org.xith3d.loaders.tds.model
OK. Could it be in one and only package ?
org.xith3d.test
OK, but redundancy with Xith core tests (com.xith3d.test)
org.xith3d.test.jcd
Why JavaCoolDude does have a seperate package ??
That’s it ! Pheww… I know it’s a bit long to read but I think a clean wouldn’t be a luxury, in our case…
And I still really doesn’t see a clear difference between the core and the TK, sometimes you have an “artistic blur” when you want to know were to put your class(es).