WSF Core 2.6 - 08 May 2020

Visit the AFSIM 2.6 Release Page on DI2E (Access Controlled) for more information and resources related to this release.

Release Dates

  • WSF Core 2.6.3 - 19 Feb 2021

  • WSF Core 2.6.2 - 13 Nov 2020

  • WSF Core 2.6.1 - 05 Aug 2020

  • WSF Core 2.6.0 - 08 May 2020

General

  • It is no longer an initialization error when a sensor does not report anything, either by specifying no reporting flags, or using the reports_nothing command.

  • Corrected potential security vulnerabilities and other issues identified through static code analysis, including buffer overflows, insecure randomness, unreleased resources, use after free, memory leaks, and type mismatches.

  • Removed the draw_orbits command. This functionality has been replaced by plugins for Mystic and Warlock.

  • The WsfSpaceMover.Descriptor script method now returns an empty string by default (i.e., when a descriptor value is not provided either as an input or as part of a TLE); whereas it had previously returned the mover’s parent platform name.

Known Issues

  • P6DOF: Nested sequencers do not execute properly for self-jettisoning vehicles – only use non-nested sequencers for these vehicles until this issue is resolved.

Corrections

  • (2.6.3) Corrected issues when using platform types with a WSF_ROAD_MOVER in a road_traffic block. If the off_road_speed was explicitly set, then these platforms were always traveling at the off-road speed even when on the road network. Additionally, these platforms were not using the speeds specified in the road_traffic block. (AFSIM-151)

  • (2.6.3) Corrected an issue with checking terrain masking when using the use_fast_masking_check option. The algorithm was going one step too far, checking behind the target. This results in false-positives of terrain masking when line-of-sight isn’t actually blocked. (AFSIM-608)

  • (2.6.3) Corrected an issue where the wrong reason was provided in event_output for the failure of a behavior_tree node to execute when calling the WsfBehaviorTreeNode.Failure method multiple times. (AFSIM-99)

  • (2.6.3) Corrected an issue where the script method WsfZoneRouteFinder.AvoidZone would not add the specified zone to the list of avoidance zones. (AFSIM-163)

  • (2.6.3) road_traffic is now generated on Monte Carlo iterations of a simulation. (AFSIM-168)

  • (2.6.3) Corrected an issue where comm messages between simulations were unreliable when more than two simulations were connected over DIS. (AFSIM-322) (AFSIM-323)

  • (2.6.3) Prevent the mover from being swapped when WsfPlatform.SwapMover is called on an externally moved platform. This prevents external simulations controlling a platform’s movement via DIS Entity State PDUs from losing control of the platform’s movement. (AFSIM-725)

  • (2.6.3) Correct an issue with the Lambert orbital targeting solver that would lead to incorrect solutions for some hyperbolic transfers. (AFSIM-908)

  • (2.6.3) Changed the time used in the lunar model from UT1 to TT. (AFSIM-886)

  • (2.6.3) Corrected a crash when calling WsfXIO.Subscribe, WsfXIO_PublishKey.Field, or WsfXIO_PublishKey.ToString from script. (AFSIM-951)

  • (2.6.2) Corrected an issue in which brace initialization (= {}) on non-constructible script types resulted in null objects. Brace initialization for non-constructible types is now a script compiler error.

  • (2.6.2) Corrected an issue where WsfPlatform.AccelerationNED would sometimes yield incorrect results, depending on what other queries have been previously executed on the same platform. (AFSIM-512)

  • (2.6.2) Corrected an issue with incorrect functionality and instability regarding the observer usage of LINK_ENABLED_ON_LOCAL, LINK_DISABLED_ON_LOCAL, LINK_ENABLED_ON_MANAGER, and LINK_DISABLED_ON_MANAGER. (Issue #2507)

  • (2.6.2) Corrected an issue with csv_event_output involving inconsistencies between the header and data being output in regard to SENSOR_TRACK_DROPPED and LOCAL_TRACK_DROPPED. (AFSIM-148)

  • (2.6.2) Added missing grammar for loiter_route command for air_traffic. (AFSIM-176)

  • (2.6.2) Corrected a bug that resulted in an input error when attempting to reference a user-defined error_model inside a sensor. (AFSIM-194)

  • (2.6.2) Corrected a bug where WsfZone.Reference was not returning correct values for zones that reference a platform or position. (AFSIM-135)

  • (2.6.2) Added an error message on execution of a callback defined at the global scope, if the callback script cannot be executed. (AFSIM-191)

  • (2.6.2) Added an error message on initialization of a callback defined at the platform scope. If the callback processor or script cannot be found, the simulation will fail to initialize. (AFSIM-192) (AFSIM-193)

  • (2.6.2) Corrected a bug which prevented WsfArticulatedPart.SetXYZ from affecting a part’s location. (AFSIM-293)

  • (2.6.2) Corrected an issue where the path computer, used by waypoint mover types, was not correctly calculating the turn radius when applying the body_g_limit constraint. The error was causing the calculated turn radius to be larger than expected. (AFSIM-301)

  • (2.6.2) Corrected an issue where defining a struct in an aux_data block erases previously defined values. (Issue #2363)

  • (2.6.2) Corrected an issue which caused shapefiles to load very slowly. (Issue #2404)

  • (2.6.2) Corrected an issue in which a platform referencing an undefined signature did not result in an initialization error. (Issue #2265)

  • (2.6.1) Corrected a bug where sending a message between the same WSF_SCRIPT_PROCESSOR multiple times at the same simulation time could cause an invalid MESSAGE variable. (AFSIM-257)

  • (2.6.1) Corrected an issue with WsfPlatform.GroundRangeTo producing different results for zero and non-zero altitudes. (Issue #2307)

  • (2.6.1) Corrected the position of waypoints within a route when both the offset and transform_route commands were used. (AFSIM-169)

  • (2.6.1) Corrected Math.AngleIsBetween to return true if the limits represent a full circle. (AFSIM-221)

  • (2.6.1) Corrected an issue where runtime comm deletion did not trigger the correct observer. (Issue #2247)

  • Corrected an issue with missing header data for csv_event_output regarding MESSAGE_HOP. (Issue #2177)

  • Corrected an issue with comparisons for equality (==) and inequality (!=) between two instantiations of a script_struct. (ELSZ #250)

  • Corrected an issue where command chains are not correctly updated when a platform is deleted or a new commander is assigned. (ELSZ #244)

  • Corrected an issue where a transmitter’s pulse_repetition_interval could become NaN. (ELSZ #301)

  • Corrected an issue in which, under certain circumstances, an invalid reference may be provided within a script context, resulting in a script exception when the reference is used. (Issue #2097)

  • Corrected the names of script methods WsfSensor.Xmtr and WsfSensor.XmtrCount to match the documentation.

  • Corrected an issue with WSF_GEOMETRIC_SENSOR where a pd_range_table with fewer than two entries can cause crashes. Such a table now results in an input error. (ELSZ #245)

  • Corrected an issue in which a sensor’s cueing limits were not being enforced based on the current mode. (Issue #1425)

  • Changed the minimum valid time value for the deferred_connection_time to one second. This prevents issues that arise when using very small time values. (ELSZ #273)

  • Corrected problems with fusion of track emitter and signal data. (Issue #1741)

  • Corrected a crash that could occur when using empty strings in aux_data. (Issue #1867)

  • Corrected an issue with which external entities may erroneously and repeatedly be reported as stale in simulations recording to the event_pipe. (Issue #1930)

  • Corrected a crash that occurred when an include command in a file created a circular dependency. (Issue #1601)

  • Corrected a crash that may occur when executing the simulation, with a DIS interface defined, shortly after a DIS platform is removed from the simulation. (Issue #1937)

  • Corrected a crash when a platform with a route mover is commanded to ReturnToRoute and was never given an initial route (default route). (ELSZ #291)

  • Modified the calculation of covariance ellipsoid axes to ensure the length of the major axis for an axis-aligned ellipse is equal to two times the standard deviation. The following script methods are affected: WsfCovariance.MajorAxis, Ellipsoid.SemiAxisSide and Ellipsoid.SemiAxisUp. (ELSZ #294)

  • Corrected an issue with missing platform part commands on the router object. These commands are now available for the router object, with the exception of the commands that initially disable the functionality of the router. (Issue #1948)

  • Corrected a crash that occurred when an external platform fails initialization. (Issue #2037)

  • Corrected a problem where dead reckoning algorithms were providing inconsistent platform location updates in realtime, event-stepped simulations, leading to periodic relative location errors among platforms. (Issue #2111)

  • Corrected missing router events from csv_event_output. (Issue #2173)

  • Corrected an issue with the sector_scan sensor scheduler in which scan rates were incorrectly calculated in some cases, resulting in asynchronous behavior between sectors.

  • Corrected an issue with data rates calculated during comm message transmission not being updated on the message EM interaction. (ELSZ #300)

  • Corrected an issue with incorrect evaluation of cyber_trigger intervals. (Issue #2088)

  • (2.6.3) Made initialization of AIR_TO_AIR_LAUNCH_COMPUTER_GENERATOR fail when deferred launch is active on the launch platform, rather than have an unclear assertion fail. (AFSIM-141)

  • (2.6.3) Corrected an issue where certain weapons caused the ATG_LAR_AND_LC_GENERATOR to generate incorrect LARs. (AFSIM-143)

  • P6DOF: Renamed the Type method on WsfManeuver to WsfManeuver.GetManeuverType. (Issue #1684)

  • P6DOF: Corrected an issue where sequencer jettison actions were not instantiating new platforms for nested subobjects. (Issue #1901)

  • P6DOF: State information retrieved through on_initialize2 is now being populated appropriately. (ELSZ #303)

  • P6DOF: The command use_route is now recognized as a valid command in Wizard for WSF_P6DOF_MOVER. (Issue #2086)

  • P6DOF: Fixed an error in low-pass filtering on autopilot signal derivatives. (Issue #2112)

  • Corrected several issues for platforms using the WSF_BRAWLER_MOVER when they are being added to the simulation at a time > 0. The platforms were getting rapidly projected from a time of zero to the current simulation time during the first update. This effect would be seen if the platform creation_time was greater than zero, or when using the WsfPlatform.SwapMover script method, or when turning the mover off and then back on. (ELSZ #264)

  • (2.6.3) WsfPlatform.FutureLocation is now valid for platforms with a WSF_INTEGRATING_SPACE_MOVER. (AFSIM-640)

  • (2.6.3) Corrected problems with special cases of change_inclination maneuvers. This issue caused the WSF_NORAD_SPACE_MOVER to enter an infinite loop when attempting to change to an equatorial, non-circular orbit. (AFSIM-315)

  • (2.6.2) Corrected a problem where the WSF_ORBIT_DETERMINATION_FILTER was not working properly due to incorrect initialization.

  • (2.6.2) Corrected an issue where the WSF_SPACE_OPTICAL_SIGNATURE was providing incorrect values in the special case where the target platform has no mover, due to eclipsing.

  • (2.6.2) Corrected an issue where the EclipseExit script method was being called on the ECLIPSE_ENTRY observer callback.

  • (2.6.2) Corrected a problem where an inherent_contrast warning would be displayed on WSF_SPACE_OPTICAL_SIGNATURE, which does not require it.

  • (2.6.2) Fixed an issue where WsfSpaceMover.EclipsedState would never return the penumbral state. (Issue #2530)

  • (2.6.1) Corrected a problem where WsfSpaceMover.SetOrbit could fail on a platform with an insufficiently defined space mover.

  • Corrected a problem where Wizard incorrectly recognized oblate_earth as grammatical for WSF_NORAD_SPACE_MOVER. (Issue #1501)

  • Corrected a problem where targeting solutions for some orbital propagators could fail, leading to a crash. (Issue #1852)

  • Corrected an issue where Orbit Determination Fusion was not providing orbit determination updates as accurately as in previous versions. (Issue #2027)

  • Corrected a problem where WSF_ORBITAL_CONJUNCTION_PROCESSOR would attempt to analyze tracks with incomplete kinematics. (Issue #1997)

  • Corrected an issue where the earth gravitational parameter attributed to the WGS-84 standard (3.986004418e+14) was actually the GPS recommended value (3.986005e+14). (Issue #2056)

  • (2.6.1) Fixed a crash when generating reports. (Issue #19)

  • Corrected an issue in the Post Processor that now allows spaces in the report_name, data_file, and output_directory. (Issue #18)

Enhancements

  • P6DOF: Added support for sending P6Dof data through the event pipe to view in Results Vis. (Issue #1646)

  • P6DOF: Added support for custom event_pipe data rates for P6Dof data in Wizard. (Issue #1646)

  • P6DOF: Added the relative maneuver WsfPursueManeuver allowing a platform to pursue a given platform. (Issue #1684)

  • P6DOF: Autopilot now makes use of stabilizing channels. (yaw for bank-to turn, roll for bank-to-turn) (Issue #1729)

  • P6DOF: SAS is now available as an augmentation on manual controls. (Issue #1729)

  • P6DOF: Alpha (and skid-to-turn beta) feed forward has been augmented to account for shifts in CG and throttle position. (Issue #1729)

  • P6DOF: aero_data tables now support the use of “reduced frequency” instead of angular rate for the rate-based derivatives. See use_reduced_frequency. (Issue #1760)

  • P6DOF: aero_component tables now include damping coefficients, including: cmq, cnr, clp, clq, and clr. (Issue #1806)

  • P6DOF: Autopilot support generation previously reported failure if a vehicle was uncontrollable through at least one tested Mach number. Now, failure is only reported if a vehicle is uncontrollable at every tested Mach number. (Issue #1986)

  • Added tiff as an output format for horizontal_map. (Issue #792)

  • Updated the shape-file output format for horizontal_map to create a SHX file for improved compatibility. (Issue #792)

Development

  • (2.6.2) Provided a public accessor GetMaximumRange() to return the maximum range of a WsfSensorMode. (AFSIM-302)

  • (2.6.2) UtInputPreprocessor now stores default values for all usages of preprocessor variables. (AFSIM-303)

  • (2.6.2) Fixed an issue in WsfDisData where the constructor would incorrectly override request ID values from externally received DisData PDUs. (AFSIM-216)

  • (2.6.1) Corrected an issue where retaining the application object while creating more than one scenario object could cause a segmentation fault due to missing medium component factories. (Issue #2226)

  • (2.6.1) Corrected an issue where the internal linkage class variable was referred to as external linkage and vice versa in WsfMessageProcessor. (AFSIM-285)

  • AFSIM has officially deprecated the 32-bit compilation option starting in version 2.6. Not all AFSIM features are 32-bit compatible.

  • CMake cache entry WSF_ADD_EXTENSION_PATH can now specify multiple search paths for extensions in a ;-separated list. (Issue #1649)

  • Relaxed the compiler version check for compatible plugins on Windows (MSVC). Only the first two digits, indicating C++ toolset major number and binary compatibility, are compared to those of the host application. (ELSZ #133)

  • Removed support for running the automated tests using Perl. Python 3 is now required for the REGRESSION_TEST and AUTO_TEST targets.

  • Corrected the source value used for WCS velocity in the UtEntity copy constructor. (ELSZ #272)

  • Added the directory containing plugins to library search path for Windows to allow plugins to have dependencies on other plugins. (ELSZ #172)

  • Refactored WsfEventOutput and WsfCSV_EventOutput so that events derive from a common base class. (Issue #302)

  • Converted UtBlackBody class into a BlackBody namespace, nested within the ut namespace.

  • UtVec3dX now overloads the operator<< to write a formatted vector to a std::ostream. (Issue #1773)

  • Fixed a bug in the add_wsf_doxygen_input CMake macro that prevented Doxygen from generating documentation for the files in the core/wsf/source directory. (Issue #1785)

  • Corrected an issue where the computed ECI-referenced orientation of WsfArticulatedPart (UtEntityPart) was incorrect. (Issue #1829)

  • Added a logging framework to be used in place of std::cout. See UtLog.hpp for basic usage. (Issue #566)

  • Renamed WsfEventPipeInterface::Send to SendImmediate, changing its signature to use std::unique_ptr to transfer ownership of the message and take an additional boolean argument indicating whether the event originated in an external simulation. Also added a method SendDependent to cache platform dependent messages until a PlatformInfo message is sent. (Issue #1797) (Issue #1996)

  • Added special field types index and time to *.utpack files to support combining AER files. (Issue #1797)

  • Refactored UtTextRange to ensure that the beginning of the range is always greater than or equal the end. (Issue #1946)

  • Corrected an infinite loop in UtStringUtil::ReplaceAll when the replacement string contains the part of the string to be replaced. (Issue #2010)

  • Corrected an issue where the wrong swap function could be called for UtScriptData and UtVariant. (ELSZ #298)

  • Corrected an issue where UtVariant was using undefined behavior with respect to type punning in unions. (ELSZ #299)

  • Corrected an issue with an incorrect coefficient in UtQuinticSpline::TwoPoint. (Issue #1997)

  • Added a SlewCompleted callback for WsfArticulatedPart. (Issue #2025)

  • Corrected an issue that produced incorrect inertial to WCS acceleration conversions. (Issue #2111)

  • Added WsfSensorSchedulerTypes which provides the mechanism for developers to register their own sensor scheduler types, via the AddObjectFactory method.

  • (2.6.2) Corrected an error in the matrix multiplication order in UtECI_Conversion for the True-of-Date (TOD) to WCS conversion when using polar angle offsets. (AFSIM-297)

  • (2.6.2) Corrected the issue of handling time-reversed updates in ut::OrbitalState. Prior to this change, the ECI conversion would be updated only if the new time came after the old time, but some script methods update bidirectionally in time. (AFSIM-298)

  • Modified UtOrbitalPropagator to internally utilize the Geocentric Celestial Reference Frame (GCRF, introduced in AFSIM 2.5) for propagation. (Issue #1837)

  • Refactored space software architecture to utilize orbital states to better encapsulate orbital propagation. An Orbital state representation can be either an orbital state vector, which contains a position and velocity, or it can be a set of orbital elements (see UtOrbitalElements). Orbital states are referenced to a particular epoch, or instant in time, as represented by a UtCalendar object, as well as a particular coordinate system (equatorial or ecliptic), and inertial reference frame. (Issue #1863)

  • Provided explicit central body representations so that they can be specified as the gravitating body for orbital propagators, as well as provide the ellipsoidal representation for computing LLA values from ellipsoid-centered locations. (Issue #1863)

  • (2.6.2) Registered a component role cWSF_COMPONENT_RF_JAMMER for WsfRF_Jammer. (AFSIM-242)