- introduced interfaces for different types of positionable components:
-- AnglePositionable
-- AxialPositionable
-- RadiusPositionable
- RingInstanceable now includes these other interfaces, making explicit the expectations of
any implementing subclass.
- RingInstanceable now indicates its angles as an array instead of returning angles one-at-a-time
-- commit includes updates to match this new API
- Added getAssembly() method to RocketComponent, to simplify instancing code
Warnings fixed:
-"JComboBox is a raw type. References to generic type JComboBox<E> should be parameterized"
-- fix: Add a <T> type specifier to each generic, (or occasionally <?>)
- "The serializable class WarningDialog does not declare a static final serialVersionUID field of type long"
-- fix: add annotation: '@SuppressWarnings("serial")'
- "Unnecessary @SuppressWarnings("unchecked")"
-- fix: remove annotation
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