WSF Core 2.7 - 30 Oct 2020

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

Release Dates

  • WSF Core 2.7.3 - 24 Sep 2021

  • WSF Core 2.7.2 - 12 Mar 2021

  • WSF Core 2.7.1 - 19 Nov 2020

  • WSF Core 2.7.0 - 30 Oct 2020

General

  • All color inputs have been standardized across the framework to accept floating point [0, 1], unsigned integral [0, 255], or hexadecimal [00, FF] values for the red, green, blue and alpha (optional) components, as well as enumerated values. Notably, the float keyword is now required to indicate the RGBA values are floating point, which may affect any usages of color commands previously accepting only floating point values, such as classification_levels. See Argument Types for more information. (Issue #1933)

  • Removed the previously deprecated WsfSpaceMover.Boost and WsfSpaceMover.AddDeltaV methods. (Issue #1722)

Corrections

  • (2.7.4) Corrected a crash in osm_traffic that occurred when background vehicles exited the route_network via an one-way road. Vehicles are now deleted and a new vehicle is spawned at the beginning of a road that originates from an edge of the network. (AFSIM-1677)

  • (2.7.4) WSF_KINEMATIC_MOVER now correctly reports acceleration. (AFSIM-1730)

  • (2.7.4) WSF_KINEMATIC_MOVER now correctly reports velocity vector. (AFSIM-1729)

  • (2.7.3) Corrected the return value of script methods WsfSimulation.ExecuteAtTime, WsfPlatform.ExecuteAtTime, and WsfProcessor.ExecuteAtTime to indicate whether the supplied script is valid. (AFSIM-642)

  • (2.7.3) Corrected the application of range_error_sigma value to the track measurement when percent_of_true_range is specified. (AFSIM-1151)

  • (2.7.3) Corrected an issue where platforms with route movers initially turned off will move along the provided route, jumping between waypoints, despite the mover being off. (AFSIM-182)

  • (2.7.3) Corrected an issue in the line_of_sight_manager that could cause multi-threaded simulations to hang or crash. (AFSIM-1244)

  • (2.7.3) Corrected an issue where platforms with route movers initially turned off and given a route, if later turned on using the WsfMover.TurnOn script method, will cause the platform to jump to the location on the route as if the mover had been on the entire time. (AFSIM-183)

  • (2.7.3) Corrected an issue in the kinematic trajectory model for the WSF_TSPI_MOVER that is used to predict future locations and time of apogee. (AFSIM-167)

  • (2.7.3) Corrected an issue in LocationValid2D() that caused some tracks with known 3-D location information to report false for this method and true for LocationValid(). Clarified documentation for these methods. (AFSIM-209)

  • (2.7.3) Corrected an issue where WSF_TABULAR_ATTENUATION was limiting attenuation values to the range [0, 1] absolute. (AFSIM-172)

  • (2.7.3) Corrected an issue where the WSF_ROAD_MOVER would not use the road network when commanded using the WsfPlatform.GoToLocation or WsfPlatform.FollowRoute script methods. (AFSIM-211)

  • (2.7.3) Corrected an issue where GPS navigation_errors were not being converted from a platform’s local XYZ coordinate frame to the WCS frame correctly. (AFSIM-932)

  • (2.7.3) Corrected an issue with the WSF_ROTORCRAFT_MOVER not moving along a route correctly after encountering a waypoint with a pause_time. (AFSIM-150)

  • (2.7.3) Corrected an issue where platforms following a route with a segment longer than ~1/4 of the earth’s circumference would not reach the proper location. (AFSIM-311)

  • (2.7.3) Corrected an issue where converting MGRS coordinates to Latitude/Longitude would fail in certain cases. (AFSIM-1039)

  • (2.7.3) Corrected a crash when using ProcessInput() on a command that depends on other input that has not been loaded. For example, a route referenced in the use_route command must be loaded or the scenario crashed. A console_output Info message will get issued when using the ProcessInput script method on a command with dependencies. (AFSIM-1071)

  • (2.7.3) Added missing documentation for mti_processor commands filtered_doppler_speed and unfiltered_doppler_speed. Added commands to the grammar for correct parsing in Wizard. (AFSIM-1073)

  • (2.7.3) Fixed crash that could occur when sending a WsfDraw command over XIO. (AFSIM-1097)

  • (2.7.3) Corrected observer documentation to include missing events, remove events no longer available, and accurately reflect event signatures. (AFSIM-1099)

  • (2.7.3) Fixed crash that could occur when osm_traffic vehicles are changing lanes to an unoccupied neighboring lane. (AFSIM-1132)

  • (2.7.3) Corrected an issue in which using the script method Array<T>.Insert would result in a script compilation error if T was not an Object. (AFSIM-1394)

  • (2.7.2) 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.7.2) 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.7.2) 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.7.2) Corrected an issue where the script method WsfZoneRouteFinder.AvoidZone would not add the specified zone to the list of avoidance zones. (AFSIM-163)

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

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

  • (2.7.2) 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.7.2) Correct an issue with the Lambert orbital targeting solver that would lead to incorrect solutions for some hyperbolic transfers. (AFSIM-908)

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

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

  • (2.7.1) Corrected deficiencies identified with the documentation of Quaternion script methods. Removed the undocumented methods GetPsi(), GetTheta(), and GetPhi(), as these have been deprecated. The Quaternion.Psi, Quaternion.Theta, and Quaternion.Phi methods were incorrectly returning angles in radians and now return angles in degrees. The documentation has been updated accordingly. (AFSIM-308)

  • (2.7.1) 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.7.1) 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)

  • 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)

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

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

  • 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)

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

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

  • 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)

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

  • Corrected a crash on application exit that resulted in some cases when using a script_struct that contains an instance of another script_struct. (Issue #1730)

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

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

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

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

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

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

  • 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)

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

  • Corrected an issue where acceleration conversions to and from ECI (inertial) and WCS were not being performed. This bug could sometimes produce incorrect acceleration values being reported in event_output and csv_event_output. (Issue #2454)

  • 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.7.3) Corrected an issue in WSF_SENSOR_COVERAGE where multiple sensors on the same platform providing free assets are all set to ignore the grid assets. (AFSIM-1233)

  • (2.7.2) Corrected an issue in AFSIM coverage where an access interval that completely covers the coverage interval would not be handled correctly, leading to incorrect MOE values. (AFSIM-785)

  • Fixed an issue where propulsion produced from P6DOF subobjects resulted in incorrect induced moments on the parent vehicle. (Issue #2187)

  • Fixed inconsistent definition of success/failure in cyber attack status report. (AFSIM-1626)

  • (2.7.3) Corrected a problem where orbit_determination fusion method was not producing a valid Initial Orbit Determination (IOD) result in the angles-only case (where only sensors that report bearing and elevation contribute to the IOD), particularly for satellites in Geosynchronous orbits. (AFSIM-291)

  • (2.7.3) Corrected an issue with WsfSolarTerminator.PlatformSolarIllumination for platforms on the surface of the Earth, or which had no mover. (AFSIM-1111)

  • (2.7.3) Corrected a problem where the three argument, WsfTrackId accepting version of WsfInterceptManeuver.Construct would silently fail and halt the simulation when used outside a platform’s script context. (AFSIM-555)

  • (2.7.3) Corrected an issue where WsfSpaceMover.RIC_AtTime would report incorrect results for platforms with no mover. (AFSIM-1360)

  • (2.7.2) Corrected an issue with change_raan and change_raan_inclination attempting to execute for equatorial orbits, resulting in an infinite loop. (AFSIM-861)

  • (2.7.2) Corrected a problem with the documented description of the rotating frame used by the WsfLibrationPoint script class. (AFSIM-854)

  • (2.7.2) Corrected a problem with the relative_time orbital event constraint failing for unbounded orbits. (AFSIM-557)

  • (2.7.2) 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.7.1) WsfPlatform.FutureLocation is now valid for platforms with a WSF_INTEGRATING_SPACE_MOVER. (AFSIM-640)

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

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

  • 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.

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

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

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

Enhancements

  • Added new command visual_elements to define visual annotations in the scenario. (Issue #1810)

  • Added the air combat wsf_plugin. This introduces the SA (Situation Awareness) Processor (WSF_SA_PROCESSOR), the core component of a new pilot cognitive model, providing support for perception, assessment, and prediction and providing lists of assets (friendlies), bogies (unknowns), bandits (enemy), and groups. (Issue #1823)

  • Added the alternate_locations command block to allow a platform to select a starting position from a set of pre-determined locations. (AFSIM-112)

Development

  • (2.7.3) Updated CMake configuration to support building AFSIM as a sub-project for another top-level project. (AFSIM-411)

  • (2.7.3) WsfXIO_ScriptListPkt now correctly reports a platform index of 0 for global scripts. (AFSIM-1053)

  • (2.7.3) Removed the redefinition of isfinite on Windows systems in DisValidationUtils.hpp, allowing developers to use std::isfinite in translation units that include it. (AFSIM-978)

  • (2.7.2) Updated the wsf::event::Result constructor to allow the use of a default Settings object and take an optional name argument to support runtime type recognition. (AFSIM-893)

  • (2.7.2) Added a new flag to UtProcess that allows the console window to be hidden when executing the process on Windows systems. (AFSIM-591)

  • (2.7.2) WsfSensor constructor now takes its WsfScenario argument by reference to const. (AFSIM-590)

  • (2.7.1) Fixed an issue with WsfDateTime::GetCurrentTime returning inaccurate results in some circumstances. (AFSIM-610)

  • (2.7.1) Added the method ConvertVelocityWCSToECI to the UtEntity class. (AFSIM-551)

  • (2.7.1) Corrected an issue where subscribers of WsfObserver::RouteChanged would not be notified by WsfPlatform.SetRoute for certain movers. (AFSIM-634)

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

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

  • Modified UtCalendar::SetCurrentDateAndTime so that seconds are provided to nanosecond precision (previously only integral seconds were provided). (Issue #2156)

  • Removed the deprecated overloads of AddEvent and AddWallEvent in WsfSimulation which took raw pointers. (Issue #1446)

  • Added more interface methods for comm protocol stack manipulation to clear, insert, and remove layers. (Issue #2149)(Issue #2266)

  • Deprecated the specification of memory management in ut::script::Data. The management of memory is implied by the type that is stored.

  • Event-pipe message id conflicts will now result in a fatal error. (Issue #2213)

  • 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)

  • Namespace WsfMeasurementUtil has been deprecated and is now an alias for UtMeasurementUtil.

  • Created a unit test for geodata’s DtedTile. (Issue #2271)

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

  • Deprecated UtScriptClass methods GetClassNameId, GetName, and GetTypeId, which have the same implementation as GetClassName.

  • UtAttributeBase and its child classes have been updated to use smart pointers instead of raw pointers. Some methods in the old interface have been deprecated.

  • WsfAttribute template class and its aliases have been deprecated.

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

  • Modified wsf::comm::Comm::SendMessage() to remove the parameter wsf::comm::SendOptions. wsf::comm::SendOptions has been removed as support for legacy comm functionality that does not use addressing. Legacy communications group specification is now placed on WsfMessage directly until core functionality is fully compliant with updates to communications. (Issue #2266)

  • WsfAuxDataEnabled::GetAuxData() now has const and non-const versions. An additional method named GetAuxDataConst() allows the const version to be called explicitly. Calling the non-const version will queue a MsgAuxData in the event pipe, if enabled.

  • (2.7.1) ESM_Mode for the WsfESM_Sensor is now exported so that extensions can access the class. (AFSIM-204)

  • (2.7.1) Corrected an issue where subscribers of WsfObserver::RouteChanged would not be notified by GuidedMovers. (AFSIM-634)

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

  • WsfRateLimitedAttitudeController is now exported so that extensions can access the class. (AFSIM-173)

  • 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)

  • 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)