Yeah, I think we should keep to floats.
I personally thought that we should keep the Java class names exactly the same as the ODE ones. I know thats gonna totally break with java convention but I think it has several advantegous:
ODE documentation will be more relavant
Porting code by copy and paste will be easier as class names will not have to be adjusted.
Another thing that is against Java convention that I think would be a good idea is to port structs as classes with lots of public attributes. That will mean java code will be able to access data just like it does in the C++ code.
Both these things will make is much easier to compare the C++ code and Java code for initial coding and maintanence. I think it will have productivity benifits.
PPU discussions are important as a ‘political’ context to this project but I do not think that the technology should really intefere with our decision making process. There are far too many unknowns with the technology. Untill there are 3 different manufacturers and 50% of games PCs contain one and all the best games all use them I don’t think we java people should be pining after the technology.
[quote]Matrix3f/4f should be used directly along side a helper class with static methods much like Math
[/quote]
Yeah I think your right actually. I ahve been thinking about this. My initial view was that a custom wrapper would allow us to put in all the extra multiplication functions used to optimize ODE. However there is nothing more annoying than using a API that does not use standard classes, especially as our project will probably have a dependancy on the standard library anyway. I thought that the vecmath API made lots of classes final but it doesn’t so subclassing is an option, however I do not like that idea becuase developers will still need a translation step somewhere to get their own constructed matricies into the system (unless we code a mechanism for them, which is more work for us >:( ).So yeah, static helper methods I think is the way to go using the standard vecmath classes.
As for generics. Although I really really like java 1.5, the features should only be used if the existing ODE design which we are copying uses them. There exists two places where tempaltes are used. The first is the dArray class, the 2nd is an obscure part of the trimesh code. If the dArray use of generics was wide spread then I would maybe say that we need to use them, but the dArray class is actually used very little:-
collision_quadtreespace.cpp:324: dArray<dxGeom*> DirtyList;
collision_trimesh.cpp:308: /* dxTriMesh::ClearTCCache uses dArray's setSize(0) to clear the caches -
collision_trimesh_internal.h:94: dArray<SphereTC> SphereTCCache;
collision_trimesh_internal.h:100: dArray<BoxTC> BoxTCCache;
collision_trimesh_internal.h:106: dArray<CCylinderTC> CCylinderTCCache;
lcp.cpp:381: dArray<int> C,N; // index sets
testing.h:37: dArray<dMatInfo*> mat;
The QuadTree space and the trimesh stuff are both areas I did not want to port. The only real place is the LCP solver, and there is is used to store a list of integers … big deal. (Damn! we need autoboxing ;))
So yeah. I think generics are not needed. Thus we might as well stick to 1.4.
Some of you might be wondering how ODE does store lists of things. Bodies and things are joined up in a link list fasion. Its a bit urgh for us Java people seeing the body code containing the implementation used to store it as a list, but I believe we should still replicate this.
[quote]I don’t really mind, but when I hear JDE I think “Java Development Environment” i.e. a variation of IDE. Google seems to agree
JODE was my first choice as a name for Odejava but there is another project with that name already.
[/quote]
Bah!