Feature roadmap for OpenRocket 2.0 ---------------------------------- Must have: - Logging system into use - Reduce memory footprint - Reduce memory leakage - Load thrust curves from external directory - Support duplicate motor definitions Maybe: - Water rocket modeling More ideas: ----------- Memory usage: - Store data as floats instead of doubles - Reduce memory leakage when closing windows - Make simulation data immutable, don't store copies in undo/redo - Profile memory usage during operation (send data to server?) - Warn user when 90% of memory is used, offer to send info to server Logging: - Implement a central logging system - takes messages with different priorities - converts them into LogLine's that are passed to log handlers - printing log handler and storing log handler - bug reports to contain last ~50 log lines - LogLine - contains TraceException for log position information - contains sequential number - log storing handler stores separately debug and info/warn levels - remove all System.out/err writing, replace with logging Motor support: - Combine duplicates into one display in the selection dialog - A single manufacturer/designation can contain multiple thrust curves - Delays are combined - Type is selected based on any not-unknown type - Hybrid type always includes P delay - Default delay selected based on heuristics - Store recently used motors, use in default selection - Integration with thrustcurve.org (syncing?) - Reading thrust curves from external directory - Plot motor thrust curve - Water rocket modelling Optimization: - Automatic general rocket optimizer (for altitude, velocity, duration etc) that allows changing any rocket parameters for optimization - Analysis of various motors for the rocket. Search all motors by diameter, impulse range, manufacturer, simulate them and present the results. Running: - Windows executable wrapper (launch4j) - Allow only one instance of OpenRocket running (RMI communication) - Running/simulating from command line UI issues: - Easy/intuitive zooming of plots - Only schedule rocket figure update instead of each time updating it - Importing flight data (file/altimeter) - Saving as SVG - Implement setDefaults() method for RocketComponent - BUG: Inner tube cluster rotation, edit with spinner arrows, slider wrong - NAR/CNES/etc competition validity checking - Print support - Drag and drop of components / other table items - Ctrl+scroll wheel to zoom in/out - Move components by dragging on the figure - Progress bar during startup Simulation: - Landing scatter plots - Simulate other branches - Remove need for 5m launch rod in real-time simulations (reduces apogee) A simulation listener that checks when sufficient velocity has been reached? - [BUG] Take single-fin cant yaw effect into account Structural analysis: - Run a simulation with each step doing a component analysis - Compute the force between different components: - between body components (pushing against and pulling apart) - inner tubes and the parent body tubes - lateral forces on fins - individual fin normal forces? - Take into account acceleration, drag, gravity - Plot forces against time Component support: - Screw weights for nose cones / transitions - Support for external pods - Support for tube fins File support: - Reading (and writing) .RKT format Refactoring tasks: - Change databases and icon loading to bean instances, implement stubs for unit tests - Move startup class to src14 directory, remove reflection - Remove database etc. initialization from class initialization, create separate set of test motors - Extract event rules and data saving from Simulator into listeners - How to handle different simulation situations elegantly (launch rod, free flight, recovery) - Change SimulationStatus to include methods for obtaining basic position (maybe even change to an interface, implements Cloneable) - Modularize calculators, simulators, atmospheric conditions, etc. - Change Motor (immutable) to be a factory of MotorInstance (stateful) Done: ----- - Reading .RKT format