Releases: USNavalResearchLaboratory/simdissdk
Releases · USNavalResearchLaboratory/simdissdk
SIMDIS SDK 1.11
SIMDIS SDK changes since version 1.10
New Features
- CMake refactored to install the CMake way, with files like simCoreConfig.cmake for use in find_package(). Installed CMake files now include a VSI prefix for imported libraries, such as VSI::simVis. External SDK project has been updated to reflect the necessary changes.
- Custom Rendering entities have a new outline preference.
- Custom Rendering now supports the concept of a history override color.
- Custom Rendering preferences for persistence and history have been added.
- Example ASIViewer now correctly handles quoted time strings.
- Example SimpleServer now has options for toggling label declutter.
- Track History now correctly updates after TSPI points are removed.
- Units for nanoseconds, kilohertz, and megahertz have been added.
- simCore/String/FilePatterns.h updated to include CDS Overlay File formats in the GOG file types.
- simCore/String/FilePatterns.h updated to include new SIMDIS_IMAGE_FILE_PATTERNS pattern that matches image file types only.
- simCore::Gars is a new class that provides static methods for converting Geographic Area Reference System (GARS) coordinates to geodetic coordinates, and vice versa.
- simData::CategoryNameManager::setCaseSensitive() is a new routine to control case sensitivity in value comparisons.
- simData::DataTable added function removeColumn() to remove TableColumns
- simQt:: EntityLineEdit now supports centering on an entity.
- simQt:: EntityTreeComposite now supports Show/Hide the Centering option and the Tree options on the right mouse click menu.
- simQt:: EntityTreeWidget::setSelected() and simQt:: EntityTreeComposite::setSelected() have been replaced with new more efficient routines with the same name.
- simQt::BindCenterEntityToEntityTreeComposite was added to provide full binding between simQt::CenterEntity and simQt::EntityTreeComposite.
- simQt::ColorGradient is a class representing a customizable blend of colors, mapped to values from 0 to 1.
- simQt::ColorGradientWidget is a Qt widget that allows customization of a multi-stop color gradient.
- simQt::EntityLineEdit now depends on simVis.
- simQt::EntityTreeComposite margins can now be set.
- simQt::EntityTreeComposite now accepts a reason why the Center on Entity feature is disabled.
- simQt::EntityTreeWidget scrolls to the current selection when filter is changed
- simQt::Settings::MetaData::makeColor() now accepts QColor in addition to QRgb as the default value.
- simQt::UnitsComboBox now has helper methods for Angles and Time Durations
- simVis::CustomRenderingNode now accepts an AbstractPointPicker to enable more complicated mouse picking in the 3d display.
- simVis::CylinderStorage::removeCylindersForPlatform(), simVis::RocketBurnStorage::removeBurnsForPlatform(), and simVis::VaporTrailStorage::removeVaporTrailsForPlatform() are now public methods.
- simVis::OverrideColor now provides static versions of the class methods.
Bug Fixes
- SDK-135: SIMDIS SDK now builds without error with Qt 5.12.
- SDK-143: AnimatedLine now correctly draws lines to endpoints established as locators.
- SDK-146: Qt versions other than the preconfigured VSI default now install correctly.
- SIMDIS-3210: LocalGrid Cartesian Grid labels now show correctly converted distance values in labels.
- SIMDIS-3227: Texture attribute osg::TexEnvCombine is now removed on model load, preventing OSG GLCORE profile warning messages.
- Example Ocean (example_ocean) now correctly builds again when osgEarthTriton is not available. Fixes issue from PR 52.
- simCore time routines using gmtime now return maximum value if gmtime returns a NULL pointer.
- simCore::linearInterpolate() now correctly maps input values to output bounds when the input values range from high to low.
- simData::DataStoreHelpers::isEntityActive() now behaves correctly for top-level Custom Renderings.
- simQt::ColorGradientWidget::setColorGradient() is no longer causes an undesired graphics reset when called with an equivalent ColorGradient.
- simQt::EntityTreeModel now correctly detects internal inconsistencies.
- simQt::EntityTreeWidget now clears the selection after a model reset.
- simQt::EntityTreeWidget now maintains selections when toggling tree view.
- simQt::EntityTreeWidget: All entity filters now show host parent node(s) if child node passes the filter.
- simQt::TimeWidget::timeEnabled() now returns the correct value.
- simVis::BoxGraphic lines no longer occasionally fade away near the corners.
- simVis::SimdisMeasurement now calculates range tool RCS measurement correctly, using entity polarity and frequency
SIMDIS SDK 1.10
SIMDIS SDK changes since version 1.9
New Features
- AC3D (*.ac) are now included in the file extensions list.
- Example ASI Viewer now supports platform tethering.
- GOG subsystem in simVis (parsing, loading, etc.) now uses more efficient ParsedShape class instead of osgEarth::Config.
- MP terrain engine is no longer supported.
- Platform Preferences has a new field animateDofNodes that controls whether the osgSim::DOFTransform nodes in the model are animated. This per-platform feature is off by default.
- Projector now supports new prefs for overriding the field of view angle from data updates.
- simCore::TextReplacer now only replaces text surrounded by '%' marks, like %TIME%. Performance significantly improved.
- simCore::TextReplacer::setUndefinedVariableHandler() is a new method that allows the caller to redefine the behavior when variables are not found. This is useful for implementing an Environment Variable reader, for example.
- simCore::Units now supports various acceleration units.
- simCore::getAngleFromDegreeString() is now tolerant of UTF-8 encoded degree symbols.
- simCore::getAngleString() is now exposed, providing a way to format angles based on given GeodeticFormat.
- simCore::getDegreeSymbol() now supports new DEG_SYM_UTF8 enumeration value.
- simData::DataStore::FlushType has a new TSPI-only flush.
- simData::LabelPrefs adds new field useValues an enum to indicate when to use actual data values vs. the adjusted display values in all labels.
- simQt::CategoryTreeModel2 saves and loads locked state of Category items using Settings.
- simQt::DataTableModel now supports a precision value for column types of simData::VT_FLOAT and simData::VT_DOUBLE.
- simQt::DockWidget::setGlobalSettings() is a new method that allows dynamically setting global settings on the simQt::DockWidget.
- simQt::EntityTreeComposite now supports right click menu actions provided by external code.
- simQt::EntityTreeModel now has routines for optionally displaying the entry “Scenario Data”.
- simQt::FillItemModelWithNodeVisitor is a new NodeVisitor that fills out a QStandardItemModel with the osg::Node tree and associated StateSet. This can be very useful for debugging the scene and seeing current state.
- simQt::TimeWidget Tool Tip can be moved from the edit control to the label by calling disableControlToolTips().
- simQt::UnitsSelectorComboBox is a new widget that lets users choose any unit from a configured family.
- simUtil::DynamicSelectionPicker now supports the begin and end points of all lines being drawn under an active LOB Group.
- simUtil::GridTransform is a new framework for creating dynamically sized grids in 2-D space, like in the HUD.
- simUtil::HudPositionEditor is a new class that ties together a HudPositionManager, HudEditorGui, and HudEditorMouse to allow for easy mouse relocation of HUD items.
- simUtil::HudPositionManager is a new class that provides a centralized interface for positioning on-screen objects, using a callback system to change the final screen position.
- simUtil::ScreenCoordinateCalculator has new methods calculateLla() and calculateEcef() to calculate screen XY from geodetic positions. calculate() signature that took an LLA position has been deprecated for the new interface.
- simUtil::UnitTypeConverter is a new class providing conversion routines into and out of osgEarth::Units, simCore::Units, and various simData unit formats.
- simVis::AnimatedLineNode::getEndPoints() is a new method that retrieves the start and end point of the animated line that is being drawn.
- simVis::ClassificationLabelNode is a new osgText::Text object that binds to a DataStore and looks like a typical SIMDIS classification label, without any positioning logic.
- simVis::CompassNode is a rewrite of simVis::Compass that allows for repositioning inside a MatrixTransform, instead of as an osgEarth Control. simVis::Compass is now a CompassNode, and maintains auto-positioning capability through its frame callback.
- simVis::CompassNode now natively supports a wind vane. Use simVis::UpdateWindVaneListener to synchronize the values with a data store.
- simVis::DisableDepthBuffer::setAlphaThreshold() now lets you configure the threshold for rejecting pixels.
- simVis::EnableDOFTransform is a new utility visitor class to turn on and off osgSim::DOFTransform animation in a subgraph.
- simVis::EntityNode now includes a virtual method for popupText, matching hook and legend text methods. Label content callback is now stored in the EntityNode.
- simVis::LobGroupNode::getVisibleEndPoints() is a new method that retrieves the end points of all lines being drawn under an active LOB Group.
- simVis::PixelScaleHudTransform is a new transform class that backs out any translations in the model-view-projection-window coordinates to get back into pixel coordinates. This is useful for some HUD displays.
- simVis::findUpdateCallbackOfType() is a new function that finds an update callback of the given type on a node.
Bug Fixes
- SIMDIS-3103: simVis::EntityLabel now correctly respects an enabled entity alias when label prefs change.
- Beam geometry generation has been revised to be more correct.
- GOG Spheres, Ellipsoids, and Hemispheres now correctly respect depthbuffer set to false, allowing you to see inside them.
- OpenSceneGraph plugins with shorter filenames are now correctly installed on make install.
- Platform inertial axis graphics are now oriented correctly even when the host entity is scaled non-uniformly.
- Projector frustum now updates correctly when field of view changes.
- Types for osgEarth::Units, osgEarth::Angle, and osgEarth::Distance are no longer imported into the simVis namespace.
- simCore::Units::MILES conversion precision fixed.
- simQt::ActionRegistry now keeps the assigned hot key list between registered and unknown actions uniform so that a single hot key cannot be assigned to more than one action at a time, even if that action is unregistered.
- simQt::DockWidget's no-title titlebar now includes a QHBoxLayout, fixing size calculations on it in some unusual conditions including SIMDIS full screen mode.
- simUtil::BathymetryGenerator now adjusts the tile bounding area, fixing gaps between generated bathymetry and the screen edges.
- simUtil::GridTransform now correctly positions grid cells when grid width and/or height is negative.
- simUtil::PlatformPosition is now deprecated. Use instead simUtil::EntityNodePosition.
- simVis::GOG modules now uses simCore::Units instead of osgEarth::Units.
- simVis::GOG::GogNodeInterface::applyToStyle() replaces applyConfigToStyle(). This is a virtual method rename, please update any related derived instances in your own code.
- simVis::ModelCache no longer performs VERTEX_PRETRANSFORM optimization by default. This fixes a display bug with OSG Box shapes run through the optimizer.
- simVis::RangeTool classes now use simCore::Units instead of osgEarth::Units for consistency.
- simVis::ScenarioManager no longer assigns a protected Depth attribute to its StateSet, avoiding a critical failure with the Two-Pass Alpha Render Bin.
SIMDIS SDK 1.9
SIMDIS SDK changes since version 1.8
New Features
- SIMDIS-3039: simVis::RangeTool horizon options (through simVis::RadialLOS) now account for loaded terrain.
- Custom Rendering Entities added to allow code outside the SDK to render graphics for an entity.
- Example Beam now includes an animate flag to show off the Beam Pulse shader.
- Examples now use Triton Layer interface instead of the deprecated Triton Node interface.
- OpenSceneGraph 3.6.2 is now the new default version of OSG shipped with the SIMDIS SDK.
- Picking example now includes support for Custom Render Entities.
- Platforms now only write to the depth buffer when the fragment alpha value is greater than a threshold, using new class simVis::DisableDepthOnAlpha.
- Two Pass Alpha bin is a new render bin implementation that draws transparent objects first without depth, then again with depth writes enabled.
- simCore::CoordinateConverter ECEF to LLA coordinate conversions are now more accurate.
- simCore::convertEcefToEci no longer takes a third time argument, instead uses the elapsedEciTime of the input ECEF coordinate for the ECI calculation.
- simData::DataStore::setNewUpdatesListener() is a new method that registers an observer to know when entity updates are added to the data store along with the updates' time of validity.
- simData::DataStoreHelpers::getUserVerticalDatum() added to return the user vertical datum value for a given entity.
- simData::MemoryTable::TimeContainerDeque is now deprecated.
- simQt::CategoryFilterWidget2 and simQt::CategoryTreeModel2 now support locking categories. Locked categories cannot be expanded until unlocked.
- simQt::CategoryFilterWidget2 now collapses all category items by default.
- simQt::DockWidget adds setting to adjust border thickness. This setting can be found at Settings / Windows / Undocked Border Thickness.
- simQt::EntityNameFilter now searches children indices for matches when acceptEntity() is called.
- simQt::MapDataModel now uses osgEarth::Features::FeatureModelLayer over the old osgEarth::ModelLayer for improved functionality. Signals and enumerations referring to ModelLayer have been deprecated.
- simQt::SearchLineEdit now subclasses QLineEdit, using Qt5 features. The previous implementation is deprecated as SearchLineEditQt4.
- simQt::SettingsModel provides option to save out only deltas when saving a settings file.
- simQt::SortFilterProxyModel is a new class that sorts based on a program defined secondary column instead of falling back to what the end user chose as a secondary column.
- simUtil::Capabilities has been updated to not warn on Mesa, Gallium, and Direct3D renderers as software renderers. Versions updated to ensure minimum OpenGL 3.0 and GLSL 3.3.
- simUtil::Capabilities includes a new constructor that takes an osg::GraphicsContext, in order to report capabilities on a specific graphics context instead of the global context from osgEarth Registry's Capabilities structure.
- simUtil::DbConfigurationFile::readEarthFile() now can read earth files from input streams instead of only files.
- simUtil::DynamicSelectionPicker::pickMask() is a new method that allows querying the picking mask.
- simUtil::HudText now supports a background color.
- simVis/Gl3Utils.h is a new header that defines new helper methods for disabling invalid GL3 mode enumerations and fixing Mesa-specific bugs with Geometry Shader code.
- simVis::FixDeprecatedDrawModes is a new Node Visitor that conditionally applies osgUtil::TriStripVisitor to Geometry to eliminate primitive sets with deprecated quads, quad strips, or polygon draw modes, improving GL3 support.
- simVis::GogNodeInterface adds hasValidAltitudeMode() method to determine if the node's altitude mode has been set properly.
- simVis::ModKeyHandler is a new class that handles differences in how the left/right mod key components can be reported.
- simVis::ModelCache now uses an osgEarth::LRUCache to limit the size of the cache.
- simVis::ModelCache::erase() is a new method to remove an entry from the cache.
- simVis::ModelCache::setUseLodNode() is a new method that lets callers decide whether to include a default LOD node on top of loaded nodes.
- simVis::PlatformModel::setModel() is now public and allows for external configuration of a Node as the platform's model, circumventing the use of prefs. This is useful for loading nodes that are not files or have no valid representation as a Prefs data structure.
- simVis::PlatformPopup has been renamed to simVis::EntityPopup, since the popup can be used with any entity type.
- simVis::RadialLOSNode no longer draws points on the radial.
- simVis::applyMesaGlVersionOverride() is a new method available in simVis/Gl3Utils.h that sets the Mesa Override environment variable on Linux systems, to avoid GL3 errors.
- simVis::fixTextureForGlCoreProfile() is a new simVis/Utils.h method for swapping out luminance images on textures for GL_RED or GL_RG images with appropriate swizzles.
Bug Fixes
- SDK-119: simQt::FontWidget no longer causes errors with AddFontMemResourceEx when used on certain Windows systems.
- SIMDIS-3046: A body-relative simVis::Gate is now correctly relative to the platform orientation, even if the host beam is not body-relative.
- BeamPulse.frag.glsl no longer incorrectly requires the GL_EXT_gpu_shader4 extension, since upgrading its version to 140 fixes the requirement for bitshift operations.
- Examples Local Grid and Simple Server now only turn on Multisample features if --multisample is specified on command line. This improves portability to some systems, like those using VMware Mesa drivers.
- FlattenTerrain.vert.glsl, an unused shader, was removed.
- Font sizes in public SIMDIS SDK simVis and simUtil interfaces now consistently expect font sizes in 'SIMDIS units.' This impacts all simUtil::HudManager text, Local Grid, Popup, and Range Tool. Defaults have been adjusted appropriately to maintain relative font size.
- Qt examples no longer swap OpenGL buffers with non-exposed windows.
- simCore/Common/Memory.h, previously deprecated, has now been removed; use standard <memory> header instead.
- simData::CategoryFilter no longer supports the assignment operator; developers must now use the assign method.
- simData::ProjectorUpdate's projectorAlpha field now defaults to 1.0 to match SIMDIS 9 behavior.
- simData::TableColumn methods begin(), end(), upper_bound(), and lower_bound() are now const.
- simQt now depends on OpenGL library for various GL Core Profile 3.3 software checks.
- simQt::CategoryTreeModel2 now synchronizes correctly after loading multiple scenarios in SIMDIS.
- simQt::DockWidget's global Disable All Docking setting now correctly restores dockability to all dock widgets when disabled.
- simQt::ViewWidget now relies on osgQt's GraphicsWindowQt to convert Traits to a QGLFormat, fixing incorrect parameters like multisampling.
- simQt::ViewWidget unused constructors taking a QGLFormat and ViewerBase removed.
- simUtil::TerrainToggleEffect now correctly works with the osgEarth REX engine.
- simVis::GOG::GOGRegistry ignores shapes with absolute points when loading an attached GOG.
- simVis::GogNodeInterface::setDepthBuffer() now correctly removes the horizon clip plane when turning on the depth test.
- simVis::ModelCache now correctly runs the osgEarth Shader Generator on loaded models in the synchronous load case.
- simVis::PlatformInertialAxis now correctly accounts for billboard flags from simVis::BillboardAutoTransform, fixing display of ephemeris and inertial axes, and circle highlight.
- simVis::SphericalVolume wireframe mode now works for beams drawn as a pyramid shape.
SIMDIS SDK 1.8
SIMDIS SDK changes since version 1.7
New Features
- SDK-95: simQt::CenterEntity now supports centering on gate nodes.
- AREPS loader now has additional warning messages to notify when data and calculations are unavailable.
- Alpha Test is now applied using a shader when feasible, falling back on FFP if not supported.
- AsyncModelLoading is a new SDK example that demonstrates asynchronous model node loading in the SIMDIS SDK.
- Box zoom is now available using the Ctrl+Shift+Left mouse button on both the Rotate/Pan and GIS navigation mode.
- CentroidEyePosition is a new SDK example that demonstrates use of the new simVis::AveragePositionNode class.
- External SDK Project under gcc now sets the compiler standard to CXX 11 or 0x as appropriate. This is required to get std::shared_ptr working on gcc 4.x.
- GNU gcc 7.2 support has now been tested. By default, the CXX-11 ABI is turned off for compatibility reasons. Legacy gcc version declarations and SPARC remnants removed.
- GateTest SDK example now includes hot keys for tethering to the platform and gate nodes.
- HorizonClipPlane in osgEarth now replaces the old ClipToGeocentricHorizon, providing better GLCORE support.
- MapScale is a new SDK example that demonstrates the use of and options on the new simUtil::MapScale class.
- OpenSceneGraph 3.4.1 is now supported out of the box.
- Platform XYZ scaling parameters can now be set to 0 or to negative numbers.
- Platform models now load asynchronously by default. This behavior can be turned off with the SIMVIS_NO_ASYNC_LOAD environment variable.
- Point Size is now applied using a shader when feasible, falling back on FFP if not supported.
- Polygon Stipple for Gates, RCS, Range Tool, and Platforms are now applied using a shader when feasible, falling back on FFP if not supported.
- Projectors can now project onto platforms using PlatformNode::acceptProjector(). Projectors example was updated.
- Qt Designer plug-in now supports the new simQt::CategoryFilterWidget2.
- Range Tool now supports showing magnetic (WMM) azimuth graphics.
- Removed std::tr1::shared_ptr in favor of std::shared_ptr. Removed ImportTR1SharedPtr CMake and SIMDIS_SDKCore_NOSHAREDPTR define. As a result, only CXX -0x compatible compilers are now supported, including gXX 4.4 and beyond, and MSVC 2010 and beyond.
- Unit tests have been added for all astronomical Julian date functions.
- simCore::Mgrs::convertUpsToGeodetic() now has improved the performance and robustness.
- simCore::SquareMatrix was added for basic matrix operations.
- simCore::calculateGeodeticOffsetPos() is a new method for calculating a geodetic LLA given a host LLA, host orientation, and XYZ host body offset.
- simCore::calculateRelAngToTrueAzEl() is a new method that calculates body-relative az/el angles from a host yaw/pitch/roll to a true az/el vector.
- simCore::toScientific() is a new method that will break a double precision floating point value into a base-10 mantissa and exponent for scientific notation representation.
- simData/DataStore.h was refactored: the ObjectId type and ObjectType enum have moved out of DataStore and into the simData namespace. The DataStore implementation of these is deprecated, but in some cases, compiler errors may force you to update your code.
- simData::CategoryFilter now includes more functions in its API to improve usability.
- simData::DoubleBufferTimeContainer, used in data tables, data limiting has been updated. Instead of growing to (pointsLimit*2) and halving, it now grows to (pointsLimit) before halving. This reduces the amount of memory used in data tables.
- simData::PlatformPrefs has a new iconAlignment field for applying alignment to 2D image icons.
- simQt::Action::actionRegistry() is a new method used to return the owning action registry.
- simQt::CategoryDataBreadcrumbs is a new widget that displays the current state of a category filter in the form of a breadcrumb, where individual elements of the filter can be easily viewed or removed.
- simQt::CategoryFilterCounter and simQt::AsyncCategoryCounter are two new classes to provide entity counts to a Category Tree Widget. These counts help users determine how many entities match each filter entry.
- simQt::ColorButton supports a new signal doubleClicked().
- simQt::ColorWidget now provides protected access to the Color Button and Label in its GUI.
- simQt::DockWidget adds the new setTitleBarFontSize() method which allows editing the title bar font size, which adjusts window icon size proportionately.
- simQt::EntityCategoryFilter::bindToWidget() is a new method specifically for binding with a CategoryFilterWidget.
- simQt::EntityCategoryFilter::categoryFilter() is a new method that provides a reference to the current filter.
- simQt::EntityLineEdit can now be cleared by setting the Selected ID to 0.
- simQt::EntityLineEdit now only emits itemSelected() when the item has changed. simQt::EntityLineEdit now emits reapplied() if the user presses the Enter key.
- simQt::EntityLineEdit now supports an "In Use" id that can be used to prevent two simQt::EntityLineEdit objects from selecting the same entity.
- simQt::FileSelectorWidget provides an option for reordering of widget items so the icon is before the text.
- simQt::IncrementalCompileSettings is a new class that manages settings for and applies incremental compilation to a scene in an osgViewer::ViewerBase.
- simQt::MapDataModel now lists all VisibleLayers in a map, grouping unidentified layers in the OTHER group.
- simQt::RegExpImpl is a new class that abstractly handles regular expression matching.
- simQt::SimpleConsoleTextFilter is a simQt::ConsoleDataModel::EntryFilter that rejects console lines that contain provided text strings.
- simQt::SplashScreen is a new class that provides some utility to the basic QSplashScreen for showing messages on startup.
- simQt::TimeFormatContainer and simQt::SegmentedText now provide different signals to distinguish between user initiated changed and programmatic changes.
- simQt::TimestampedLayerManager now supports multiple groups of timed imagery. At most one image from each group will be shown depending on time. Timed image layers with no specified group will be considered in the same group.
- simQt::Toast is a new class that provides the ability to show brief toast popups with customizable text.
- simQt::ToolTipUpdater is a new class that handles updating the tool tips of simQt::Actions registered with a simQt::ActionRegistry to include their hot key.
- simQt::ViewWidget is a new class that serves as a Qt Widget wrapper for osgViewer::View or osgViewer::ViewerBase.
- simQt::WeightedMenuManager is no longer abstract. Use setMenuBar() instead of relying on topLevelMenu(), which is deprecated and will be removed at a future time. simQt::PopupMenuManager has been updated appropriately.
- simQt::WeightedMenuManager now supports menu bars, tool bars, and status bars.
- simQt::WeightedMenuManager::insertToolBarAction() is a new method to add a QAction to a toolbar rather than just simQt::Action. This will permit the use of QWidgetAction with this class.
- simUtil::BoxGraphic utility class added to draw and update a simple box.
- simUtil::Capabilities is a new class that can be used to retrieve various hardware capabilities of a system, based on osgEarthUtil::Capabilities.
- simUtil::DynamicSelectionPicker is a new simVis::Picker implementation that scales object sizes for easier selection. Picker example updated to use this algorithm by default.
- simUtil::DynamicSelectionPicker now supports picking of gates. By default, it only picks platforms. Use setPickMask() to change this behavior.
- simUtil::HudManager adds support for alignment to images.
- simUtil::MapScale is a new class that can display the scale of the map inside a simVis::View.
- simUtil::MouseDispatcher now has a subsystem to deal with mutually exclusive mouse manipulators. See addExclusiveManipulator() and related functions.
- simUtil::MouseManipulatorAdapter now optionally passes mouse events to a osgGA::GUIEventHandler. Use this to adapt an existing GUIEventHandler to the MouseManipulator interface by wrapping it.
- simUtil::MouseManipulatorExclusiveAdapter is a new class that adapts an existing osgGA::GUIEventHandler with a setEnabled(bool) signature for use as a mutually exclusive mouse mode with simUtil::MouseDispatcher.
- simUtil::ScreenCoordinateCalculator now accounts for over-the-horizon occlusion by the earth.
- simVis::AveragePositionNode is a new class that places itself at the center of a bounding sphere generated from the positions of the simVis::EntityNodes it is tracking. This is useful for centering on a group of entities.
- simVis::BillboardAutoTransform is a new class used for orienting 2D images relative to the screen.
- simVis::CentroidManager is a new class that manages a centroid node (e.g. simVis::AveragePositionNode) for each View in the scene.
- simVis::DynamicScaleTransform now dynamically adjusts the LOD Scale value in Orthographic Mode so as to activate the correct model LOD given the apparent eye distance from Earth.
- simVis::GOG now provides a load format to identify the source data format.
- simVis::GogNodeInterface adds applyBackfaceCulling() method to properly set backface culling.
- simVis::LineGraphic now has setDisplayMask() to change the mask used by its graphical components.
- simVis::PlatformModel implements PlatformPrefs nodepthicons field and applies to image icons, turning off the model's depth test.
- simVis::RangeTool abbreviations were updated to be shorter and more consistent.
- simVis::RangeTool now allows the placement of text at the center of the graphics or at the midpoint between the two entities.
- simVis::RangeTool now supports optional graphics and text display. In addition, simVis::RangeTool...
SIMDIS SDK 1.7
SIMDIS SDK changes since version 1.6
New Features
- BUILD_SDK_EXAMPLES is a new CMake flag that can be used to control whether SIMDIS SDK examples are built.
- CMake targets rename from SIMDIS_SDKCore, SIMDIS_SDKData, etc. to simNotify, simCore, simData, simVis, simUtil, and simQt.
- Example for Picking has been added. This example demonstrates using the osgEarth RTT Picker to pick platforms and GOGs.
- LOBs now flash via a shader.
- Output names for SDK libraries on Linux have been reformatted to look like simVis.so.1.6.0; soft links are now added for simVis.so and simVis.so.6.
- Output names for SDK libraries on Windows have been reformatted to look like sdk6-simVis.dll.
- Registry Loader now uses pixel size instead of eye range for the LOD auto-generate. This helps in cases with extreme scales in two of three dimensions on entities.
- Timestamped Layer is a new example that demonstrates loading time-stamped image layers, such as for moving cloud imagery.
- simCore/Common/Version.h is now generated at configure time.
- simCore::EM now includes FrequencyBandIEEE, an enumeration mapping to the IEEE Frequency Band Designations, and supports the same functions as FrequencyBandUsEcm.
- simCore::EM now includes a new function to compute free space detection range for an ESM receiver as well as an optional free space path loss.
- simCore::getFreqMhzRange() is a new function that provides the minimum and maximum frequencies of the specified Frequency Band Designation.
- simCore::isValidHexNumber() is a new function that does strict type checking on hexadecimal input values.
- simCore::quoteTokenize() now handles escaped quotes.
- simCore::soVersion() returns the shared object binary compatibility version, replacing simCore::buildNumber().
- simCore::toUsEcm() converts a frequency into a EU, NATO, US ECM frequency designations.
- simData::DataStoreHelpers now includes new getOrCreateDataTable() and getOrCreateColumn() functions.
- simData::DataStoreHelpers::isEntityActive() is a new shared method that can be used to determine whether a Data Store entity is active or not, moved from simQt::EntityStateFilter.
- simData::LabelPrefs message has a new DisplayFields field hookDisplayFields to manage hook track text.
- simData::PrefRulesManager interface now allows enforcePrefValue() to turn off enforcement. isPrefValueEnforced() added.
- simExamples::IdleClockCallback is a new callback used to link together a simData::DataStore and a simCore::Clock.
- simQt can now be built in more build environments, even when simData and simVis cannot be built.
- simQt::BoundVariantMapSetting is a new BoundSetting class that wraps QMap.
- simQt::DockWidget now works better in cases where simQt::Settings is unavailable.
- simQt::DockWidgets can now be closed by double clicking the title bar's icon.
- simQt::EntityFilterLineEdit now colors the text red when the filter is a regular expression that is not valid.
- simQt::EntityLineEdit now support filtering via signals and slots.
- simQt::EntityLineEdit now supports Entity State filtering.
- simQt::EntityNameFilter class implements the simQt::EntityFilter interface. An instance of this new filter is built into the simQt::EntityTreeComposite and automatically added to its entity filters.
- simQt::EntityTreeComposite now allows users to define and save filter settings.
- simQt::EntityTypeFilterWidget has a new variant of setSelections() that takes a set of ObjectType values. This is useful for integrating with Rules code.
- simQt::FileDialog classes now respect environment variable SDK_NATIVE_FILE_DIALOG. Set this environment variable to 0 to force off the native file dialog in your application. This is useful particularly for software that has COM interaction issues.
- simQt::QtConversion now includes the new method translateDegreeSymbol() to display the degree symbol in a QString.
- simQt::TimeWidget now supports a disabled state which displays "-----" for the time.
- simQt::TimestampedLayerManager is a new class that allows tracking image layers with a time configuration and showing at most one of them at a time based on current time.
- simUtil::IdMapper is a new class that lets you map IDs from a foreign data source to IDs in another data store.
- simUtil::LineGraphic adds the ability to draw a labeled line graphic between two LLA positions.
- simUtil::LineGraphic can now be created with LLA vectors instead of simUtil::Position objects.
- simUtil::LineGraphic now has a setDraw function to draw or hide the line and its label.
- simUtil::PlatformPopupManipulator now includes a constructor that takes a simVis::Picker for RTT picking instead of intersection picking.
- simVis can now apply a line of sight graphic to platforms, and supports optical and radar LOS.
- simVis::AddEventHandlerToViews is a new class defined in simVis/ViewManager.h to help add GUIEventHandler instances to views in a view manager.
- simVis::EarthManipulator now includes accessor functions for the FOV. View now updates manipulator FOV correctly.
- simVis::OverrideColor can now be configured with a multiply and replace mode.
- simVis::Picker is a new facade class that helps integrate osgEarth's RTTPicker into the SIMDIS SDK for faster and more accurate picking.
- simVis::PlatformModel is now automatically tagged in the osgEarth object index for use with RTT Pickers.
- simVis::PopupHandler constructor added that takes a simVis::Picker.
Bug Fixes
- GOG parsing code now warns properly when an unknown keyword is found.
- Local Grid graphics now use the appropriate Render Bin.
- Overhead mode now disables near frustum culling instead of turning off all frustum culling. This improves performance.
- RCS is now in a traversal order bin, higher in render order. Fixes display issues.
- Reduced the default LOB history appearance from 1800 to 10 points in order to improved display frame rate.
- SDK-116: simQt CMakeLists.txt now consistently sets STATIC_OR_SHARED to STATIC.
- Simple Sky is no longer installed as the default sky model in examples when GLSL version is detected less than 3.30.
- simCore::TextReplacer now correctly deletes memory when using deleteReplaceable().
- simQt no longer erroneously depends explicitly on QtOpenGL library.
- simQt::DockWidget now forces the X11BypassWindowManagerHint off when restoration of dialog state succeeds. This fixes an obscure RHEL Gnome bug in Qt where File Load/Save dialogs could appear behind dock widgets.
- simQt::EntityTypeFilterWidget::setSelections() now correctly emits when selections have changed.
- simQt::formatTooltip() has moved from simQt/QtConversion.h to simQt/QtFormatting.h.
- simUtil::RecenterEyeOnArea::centerOn() now allows the caller to scale the viewing distance.
- simVis beams, gates, lasers, and lobs update their labels.
- simVis::GOG::ParserData now defines reference points as absolute, so that GOGs with altitude mode set to relativeToGround will now display properly over terrain elevation data.
- simVis::Platform now ignores flush on static platform.
- simVis::Registry::setNetworkDisabled() no longer relies on the cache settings to disable network access in osgEarth, instead relying on a osgEarth::URLRewriter.