OpenRocket. At build time, it will utilize the Thrustcurve.org xml api
to download the current information (curve files and supplemental
information). OpenRocket uses the supplemental information to populate
case-info, propellant type, availability as well as correct diameters
and length. Modified motor search dialog to hide unavailable motors and
show case-info.
- These two methods did the same thing, so this patch removes the former from RocketComponent and descendants
- Wherever used, "PositionValue(...)" was replace with "AxialOffset(...)"
- Removed some extraneous redirect definitions of PositionValue(...)
- Fixed some UI references to the old method
- Rocket total mass is split into 'dryMass' and 'propellantMass'
-- each mass type has a corresponding calculation method in MassCalculator
- Calculating Inertias and Center-of-Mass FOR MOTORS assume:
- time-invariant x-coordinate
- time-decreasing density
- mass correctly tracks propellant usage, as measured by thrustCurves
- elimated MassCalcType enum: was not actually solving a problem.
- simply use motorTime: 0 for launch Double.MAX_VALUE for burnout
- NO_MOTORS is represented by a configuration without attached motors
-- try: "rocket.setSelectedConfiguration( rocket.getEmptyConfiguration())"
- 'dry mass' vs 'total mass': 90% of the time, a caller wanted 'total mass'
- total_mass = dry_mass + propellant_mass
- mass @ simulation time wasn't represented by the enum, had existing overloads anyway
- get vs calculate methods:
-- gets revalidate the cache, then retreive specific information
-- calculate simple calculate the desired information, and ignore the cache.
--- I'm particularly confident about cache reliability:
particularly as it doesn't account for changing time during simulation.
- reduced / simplified debugging messages
- Cleaned up the ThrustCurveMotor api interface
-- Converted 'getTimePoints().length' -> 'getSampleSize()'
-- Unified ThrustCurveMotor gets to the form getXXXX(double motorTime)
-- Restricted access for several methods from public -> protected
- Updated ThrustCurveMotorTest.java
Current limitations: Alpha value does not seem to be saved in .ork file, Depends on color chooser having alpha capability. Does not show up as transparent in "3D Unfinished"
- adjusted some type cast warnings
- Added 'ignore if new==current' paths in rocket configuration functions
-- These if paths break potential infinite loops
- added update code for the main-window selected configuration dropdown
-- now updates when the currently-selected configuration is removed.
- adjusted some class member names to be more descriptive
- When a component lacks an entry for the currently selected FC
-- Code would sometimes fail to create a new motor entry
- removing a flight configuration from a rocket
-- removes all component configurations tied to that configuration Id
- Pulled JComboBoxModel<FlightConfiguration> into its own class: ConfigurationModel
-- removed Rocket.toConfigArray() --> getFlightConfigurationByIndex(int,bool)
-Refactored document.getDefaultConfiguration -> getSelected...
-- because that's what it does. Default is a different thing.
-minor: minor spelling errors and unused fields/functions
- the selected configuration in a rocket is now specified by id instead of instance
- tighted up Configuration UI behavior - operations should now start from selected configuration row
- Rocket.getSelectedConfiguration will now create a new
configuration if only the default config exists
-- added additional unit tests for this behavior in: FLightConfigurationTest
- added test for saving ver 1.08 files to OpenRocketSaverTest
- Converted : "private static final long serialVersionUID ..." declarations to:
"@SuppressWarnings("serial")"
- cleaned up some other random errors:
-- tightened excessive permission modifiers -- public ->
-- change some methods from 'public' to '/*package-local*/'
-Changed default Motor Ignition event to AUTOMATIC
-enabled swing-test path under intellij
-fixed some simple compile errors in swing/test ... IntegrationTest
- Fixed bugs in the simulation event handling:
-- removed extraneous BURNOUT checks
-- added MotorClusterState.burnOut(..) update calls on BURNOUT event
-- added MotorClusterState.expend(..) update calls on EJECTION_CHARGE event
- MotorInstanceId -> MotorConfigurationId (to reflect actual usage)
-- removed name field (unnecessary)
- changed FlightConfiguration behavior to cache ALL motors, and return active motors as requested
-- updated corresponding active-motor-list updating through to the simulation layers
- *Adjusted event handling in BasicEventSimulationEngine*
-- combined redundant event-handling for IGNITION FlightEvent
-- adjusted parameters for throwing IGNITION FlightEvents
- Added validation method internal to FlightEvent class.
-- documents assumptions about classes are expected for what types of flight events.
- renamed MotorState -> MotorSimulation -> MotorClusterState
- renamed MotorState enums -> ThrustState
- Adjusted MotorConfigurations to be init-linked to a mount, and FCID
-- these are final member fields, and required for construction. And immutable.
- moved IgnitionEvent to motor package
- Adjusted MotorInstanceId to represent a motorCluster key
-- wraps a UUID, and uniquely keyed to its: mount, FCID
- fixed AxialStage methods isLaunchStage() and getPreviousStage()
- added methods to MotorMount interface to reduce extraneous, always-true casts
- various miscellaneous fixes to reflect method changes
- various test fixes
-- added test to verify 'getPreviousStage()' method
- Created MotorState as an enum describing discrete states a motor may be in
- moved ThrustCurveMotorState info back into MotorSimulation
-- MotorSimulation will be used by the simulation code.
-- tracks simulation-time info, such as event times, and current state ( <MotorState> )
- MotorConfiguration no longer have any knowledge about their simulation info
- moved functionality (BUT NOT STATE) into ThrustCurveMotor
-- can query about thrust(t), mass(t), cgx(t)
- added new ComponentChangeEvent type: GRAPHIC
- does not change the rocket structure, nor behavior, but requires updates to the UI
- removed event handling from FlightConfiguration
- caused a circular event loop
- also, collected too many responsibilities in the class (bad code smell)
- minor refactor of event handling in Rocket. (no change in behavior)
- Fixed StageSelector behavior
- should now pull selected configuration from rocket
- should now correctly notify rocket (and indirectly, the graphics)
- Simulations now load the configuration ids corresponding to it's file entry.
- involved removing redundand flightconfig id fields
- FROM simulation conditions and simulation options
- TO "Simulation"
- Distilled some unit tests to use all rockets from the TestRocket class.
- Fixed a few warnings
# FlightConfigurations behave differently than the ...ParameterSet instance
- Rockets no longer have a defaultConfig, but have a selectedConfiguration
- therefore these function were completely re-implemented native to the Rocket class
- FlightConfigurationTest verifies this functionality
- simplified several function calls through the code base
- added convenience methods for getting the config[] to the UI
# expanded RocketTest to verify Rocket.copyWithOriginalID():
- rocket is cloned, so non-trivial members must be cloned as well.
- the default value is now simply an entry in the map
- size() returns only the number of overrides
- getIds() returns only the ids of overrides
- added ParemeterSetTest to test FlightConfigurableParameterSet
- removed (already defanged) event handling functions from MotorConfig
- removed (already defanged) event handling functions from DeploymentConfig
- removed (already defanged) event handling functions from IgnitionConfig
- FlightConfigurableParameter no longer extends ChangeSet
- fully parameterized DoubleModel to <T extends Enum<T> >
- fully parameterized EnumModel to <T extends Enum<T> >
- in FlightConfiguration:
-- adjusted functions to consistently refer to <x>ActiveMotors()
-- corresponding functions now act the same way
- removed '.release()' calls from FlightConfiguration
Removed Automatic ignition Option
- "bottom" core stage is ill-defined in current configuration
- 'automatic' values in files get loaded as 'launch'
Fixed file values for loading Pods
UI elements now change per-configuration separations not the defaults
fixed separation configuration file-write code.
Added max-time guard for simulations at 1200 seconds.
FlightConfiguration.clone() now correctly clones internal data
-> caused mysterious disapearing-rocket-display bug
-> added FlightConfiguration.instanceNumber for debugging
Refined stage-set-active methods to fine tune event firings
Improved output of various debug methods.
Fixed various warnings
availability flag provided by Thrustcurve.org. Change serialization
process to pull current files from Thrustcurve.org using the xml api,
use the corrected data for diameter and length, and use a consistent
motor designation. Added fields to the Motor chooser - case info is a
column in the listing (replacing MotorType), the other info is in the
motor details tab. Added toggle to hide motors which are OOP.