- 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
Motors are now cloned for each new simulation (including background and foreground runs)
-> motors are now cloned within the configuration clone method.
-> MotorInstance.reset() resets instance to launch state
Removed spurious negative time-step check in ThrustCurveMotorInstance:154
-> was triggered during normal simulation operations.
Added MotorInstance time updates to AbstractSimulationStepper:
-> moved from MotorInstanceConfiguration.step(...)
Misc variable name changes to be more descriptive
- Initial selected configuration is the last loaded
- Correctly loads the correct config Id for each simulation
- Can correctly display the Config Id for each sim. (both in table, and edit)
-ParameterSetModel fixed - controlled configuration in the main window. et al.
- now implements a generic ComboBoxModel<T>, instead of just a FlightConfigurationId.
- events from a rocket start out disabled, and are turned on by the RocketLoader
- FlightConfgurations will once again describe their contained motors, if not explicitly named otherwise
- Refined ComponentChangeEvent type enum
- Added other miscellaneous debugging statements and methods