If you are an advanced user of Chrono::Engine, you can apply to join the developer team. Contact us (see at this page) and we will give you an user name and a password for full access to the SVN, so that you can also commit changes, remove bugs, add new code, etc. See the instructions on SVN for more informations on SVN.
Basic guidelines for developers are the following.
SVN directory structure
- Small modifications (bug removals etc.) just change a single file: no problem, simply submit the SVN change. (Just remember that if you change some low level stuff, you must be sure that you do not break some feature! Do regression testing.)
- Larger modifications (ex. new features) require new .cpp and .h files:
- add the new files in preexisting subdirectory of ChronoEngine/source/ if it makes sense, for example if you create a new c++ class for, say, string manipulation, just add its .cc and .h files to the /core/ subdirectory,
- add the new files to new subdirectories of ChronoEngine/source/ if you start a new set of features, for example create a new directory called ChronoEngine/source/fluids/ if you plan to add many .cpp and .h files related to fluid simulation,
- add the new files to a new unit if you implement something that could be optionally used: in this way the end user is not forced to link your library if it is not interested; for example create a new directory called ChronoEngine/source/unit_ACIS if you want to develop some additional DLL called ChronoEngine_ACIS.dll that could be linked in order to access features of ACIS-based CAD tools (so if the user does not have all the ACIS tools installed on his system, he is not forced to do). Implementing a new group requires a special CMakeList.txt file for building the dll, just see how we implemented those contained in the existing units.
We do not force users to follow strict coding styles and formatting rules -the Chrono::Engine project itself is not 100% coherent- but it would be better if you try to follow these guidelines:
- source files (and headers) should start with the CH... prefix, for example CHmyClass.cpp, CHmyClass.h
- class names should start with a Ch... prefix, for instance ChMyFluidElement
- before each class declaration (and before each public member) remember to put a description in form of a comment, using the Doxygen style: /// before each row.