FGRadar
Developed by | Fernando García (Icecode GL) |
---|---|
Written in | C++ |
OS | Cross platform |
Development status | Active (as of 10/2012) |
Development progress | |
License | GNU General Public License v3 |
Website |
FGRadar is a free, open-source, multi-platform and stand-alone air traffic control (ATC) client for FlightGear currently under development (10/2012). It makes use of the SimGear library and the Nasal scripting language.
On the scripting side, it uses the GTK+ and Cairo wrappers for Nasal in order to perform GUI rendering and drawing operations, respectively.
Status (10/2012)
Under development as of October 2012 (no public release yet).
Planned Features
- multiplayer support by sending/recieving packages from the MP servers
- reading shapefiles in order to create terrain maps (OpenRadar style)
- FGCom protocol support
- Flight Planning support (might include support in fgms too)
- Nasal command line to execute extension functions easily without scripts
Contributing
Contributors are welcome to join the project. C++ Developers should ideally have some experience with:
- C++
- GIT
- CMAKE
- MULTI-PLATFORM development
In addition, a little familarity with the SimGear/FlightGear code bases is a definite plus, because FGRadar re-uses some code from those.
Note: As of 11/2012, it will also be possible for non-C++ developers to contribute to the project via Nasal scripting, because FGRadar re-uses FlightGear's scripting subsystem. So anybody familiar with Nasal scripting in FlightGear, should feel quite at home in FGRadar. In addition to many of the extension functions found in FlightGear (such as setprop/getprop etc), FGRadar also adds GTK/CAIRO bindings for powerful GUI/2D drawing support.
If someone wants to join the project, give ideas, requests or opinions, feel free to do so. The repository is here: https://gitorious.org/fgradar
To get commit privileges, please get in touch with Icecode GL via the forum or directly via gitorious.
Design
- Written in C++
- Uses Doxygen for developer documentation
- Multi-Platform support
- Uses cmake as the build system
- uses the SimGear library
- uses GTK 2.0
- uses CAIRO
- scripting support via Nasal
- Implements an SGSubsystem-based main loop, to re-use existing SG/FG code
- Uses the FlightGear/SimGear Property Tree as its internal main data structure
- Uses the FlightGear/FGMS networking stack (based on SGSocket)
Changelog / Completed
- cmake support Done
- main loop cleanup to prepare scripting support Done
- the CMAKE build system should probably be re-structured such that each source directory gets its own CMakeList? Done
- implement an SGSubsystem-based main loop Done
- absorb useful stuff (gtk/cairo bindings) from "Nasal standalone" into scripting module, and use SimGear's Nasal Done
- implement an SGApplication framework for SGSubsystem-based CLI/GUI apps Done
TODO (Nobody working on any of these)
- add a "data" folder for scripts etc (fg-root), needs to be installed via CMake
- use simgear::ResourceManager::instance()->addBasePath(fg_root, simgear::ResourceManager::PRIORITY_DEFAULT) for data folder access
- apt.dat version 850 parsing (currently only 810 is supported)
- more map projections (only the Mercator projection is available right now)
Known Issues
- The NasalSys.cxx file uses gettimeofday(), which may not be available on Windows - we need to add CMake magic to detect availability of it (already done by FG!) Pending
- Determine if we need to find a better solution for GTK's blocking main loop than jusing doing gtk_main_iteration_do() (threading? ) Pending
Work in Progress
- improved cross-platform support, so that FGRadar also works on Windows
- Nasal scripting support
- re-add and port submodule support for scripting, so that multiple files can be loaded into the same namespace Pending
- start using the SimGear-based logging facilities (SG_LOG) Pending
- add a SG_OSGApplication inherited from SGApplication which provides an osgviewer-based window (see $FG_SRC/utils/fgviewer/fgviewer.cxx) to support Canvas
- add a new SGSubsystem that connects to fgms and gets a list of aircraft, i.e. via http://mpserver01.flightgear.org:5001/ and SimGear's io/netChat (stub exists) Pending
- improved Nasal GTK wrapper (port from GTK 2.0 to 3.x) Pending
- An XML configurable GUI using Gtk (glade) Pending
- merge Nasal progress from initial-scripting-support branch into master Pending
- start using the property-tree