This page shows the release notes of older versions up until the point that the new version was released.
For a full list of release notes of an old version, consult the documentation of that version.
For example if you want to see what is fixed in each 2019.1.x patch release, consult the
release notes in the documentation of the 2019.1 release.
2024.0
2024.0.04
Bug fixReal-time Engine
LCD-13487
TLspContinuousLabelingAlgorithm
didn't handle edited labels correctly anymore. Such labels
were, for example, not correctly moved when colliding with one of the view's edges, or with another label. This was
a regression that was introduced in the first LuciadLightspeed 2022.1 release.
2024.0
New featureReal-time Engine
TLspRadarVideoLayerBuilder
now has the ability to work with radar feeds
whose angular or radial resolution are variable over time. This requires the user to manually
specify the resolution of the visualization, which is then effectively decoupled from that of
the data. The new method displayResolution()
on the layer builder is
used to enable this behavior. If called, the radar video layer will be fully robust against
all variations in the resolution of the incoming data.
2022.0
2022.0.10
Bug fixReal-time Engine
LCD-12541
2022.0.06
Bug fixReal-time Engine
LCD-12510
When a Lightspeed view is configured on a
TLcdSimulator
, the simulator now uses that view's
ILspView#invokeLater
for updating the simulator model. Previously, it would always schedule
model changes on the AWT Thread, which was not compatible with
TLspFXView
.
2021.1
2021.1.15
Bug fixReal-time Engine
LCD-12331
TLcdGXYContinuousLabelingAlgorithm
didn't always take selection into account. For labels with a selected size that differs from
their non-selected size, this could lead to incorrect decluttering results.
2021.0
2021.0.07
Bug fixReal-time Engine
LCD-11994
2018.0
2018.0.09
Bug fixReal-time Engine
LCD-10141
2018.0
ImprovementReal-time Engine
TLspRadarVideoLayerBuilder
now paints a sweep line, radar grid and range style by
default. Before, it only painted the radar video content.
The styler of the built layer implements ILspCustomizableStyler
, so you can disable
and change the style for this new content using the methods of that interface. Consult the javadoc for detailed
information.
ImprovementReal-time Engine
The new
TLcdRadar
class allows you to visualize radar video data from
custom data feeds. See its
addRadarSweep
method to find out how to pass radar video
data into the radar object. The
samples.realtime.lightspeed.radarvideo
sample demonstrates
how to use these classes and how to visualize the data using
TLspRadarVideoLayerBuilder
.
ImprovementReal-time Engine
LCD-8729
TLspRadarVideoLayerBuilder
now offers better support for radar video data in high resolution.
Previously, the data was sampled at a smaller resolution before it was shown on the screen. Now the full resolution
is preserved.
Bug fixReal-time Engine
LCD-9487
TLspRadarVideoLayerBuilder
: a radar layer was only repainted in response to a model change event or a view change.
That could result in an unsmooth fade-out of the blips. Now the radar will
repaint itself automatically, resulting in a smooth fade-out of the blips.
2017.1
2017.1.03
Bug fixReal-time Engine
LCD-9666
Using military symbols in combination with the realtime.gxy.clusterLabeling sample didn't work correctly.
Bug fixReal-time Engine
LCD-9632
2017.0
2017.0.01
Bug fixReal-time Engine
LCD-9152
TLspRadarVideoLayerBuilder: radar layers removed from the view did not release all retained memory.
2017.0
Bug fixReal-time Engine
LCD-8729
TLspRadarVideoLayerBuilder can now handle radars which have an angular and/or radial resolution that is higher
than the maximum supported texture resolution of the GPU. In case the resolution of the radar is too high, it will
be visualized at a reduced resolution.
2016.1
2016.1.05
ImprovementReal-time Engine
LCD-8482
Changing the system clock during TLcdSimulator playback no longer pauses the simulation.
2016.1
ImprovementReal-time Engine
The "Track Simulator" sample was adapted to use a time slider based on a Lightspeed non-georeferenced view.
See TimeSlider
javadoc in the samples.lightspeed.timeview
package for more details.
Bug fixReal-time Engine
ALcdTimeIndexedSimulatorModel: removeTracks now releases write locks on its
track model before firing the model events. This is required for multithreaded
applications, as documented in the threading chapter in the LuciadLightspeed
developer's guide.
Bug fixReal-time Engine
LCD-8168
ALcdTimeIndexedSimulatorModel: no longer throws a NullPointerException when you
initialize it with an empty list of tracks, and then add tracks using
addTracks
2016.0
2016.0.11
ImprovementReal-time Engine
LCD-8000
A new "afterglow color" property was introduced in TLspRadarVideoStyle. This color
is applied to radar blips that were not confirmed by the most recent pass of the
radar but which are still visible due to afterglow. This allows the user to
visually distinguish current blips from stale ones even when using long afterglow
durations.
2015.1
2015.1.16
Bug fixReal-time Engine
LCD-7336
Continuous labeling: labels could move on top of the anchor point (e.g. a track) when clamping both the
distance and the angle of the label.
2015.1.01
ImprovementReal-time Engine
LCD-6853
TLspRadarVideoLayerBuilder can now handle input data where the cell duration
is not constant across all records, provided that the longer cell durations are
an exact multiple of the shortest duration encountered in the data feed.
2015.0
2015.0.11
Bug fixReal-time Engine
LCD-6579
Fixed an issue with TLspRadarVideoLayerBuilder where radar feeds could exhibit
single-cell gaps in the angular direction, due to small fluctuations in the
azimuth values of the input data.
2015.0.06
ImprovementReal-time Engine
LCD-6597
TLspContinuousLabelingAlgorithm now doesn't make labels for objects closely outside the view border invisible.
2015.0.03
ImprovementReal-time Engine
Radar video layers now support antialiasing of the video feed. This reduces
"shimmering" artifacts when displaying high-frequency data while zoomed out.
Antialiasing is disabled by default, but can be configured by a quality hint
which was added to TLspRadarVideoStyle.
Bug fixReal-time Engine
LCD-6482
Plot layers did not clean up all their model listeners. As a result some of the layer's memory could not be released
as long as you reference the plot model.
Bug fixReal-time Engine
LCD-5930
Plot layers did not query the stylers again after the model has changed.
2015.0.01
Bug fixReal-time Engine
Radar video layers were made more robust in their handling of missing or
out-of-order data records.
2014.1
2014.1.07
ImprovementReal-time Engine
LCD-6288
TLspRadarVideoStyle now allows configuring the afterglow duration either
absolutely (as a duration in seconds) or relative to the radar's rotation speed (as a
number of full 360 degree sweeps).
Bug fixReal-time Engine
Fixed erroneous painting of radar video feeds when the blip afterglow time was
set to zero.
2014.1
ImprovementReal-time Engine
The new package com.luciad.realtime.lightspeed.radarvideo provides support for the
visualization of radar video feeds, e.g. from ASTERIX category 240 data. The
main API entry point is TLspRadarVideoLayerBuilder. The package
samples.decoder.asterix.lightspeed.radarvideo demonstrates the new functionality.
2014.0
2014.0.01
Bug fixReal-time Engine
LCD-5500
ALcdTimeIndexedSimulatorModel: now indexes the times of the tracks correctly when they are further than
25 days apart in begin- or end-time.
2014.0
Upgrade considerationReal-time Engine
TLspPlotLayerBuilder is now available in the Lightspeed module.
Please replace usages of classes in com.luciad.realtime.lightspeed.plots
with equivalent classes in com.luciad.view.lightspeed.layer.plots.
The plots sample is also available in the Lightspeed module as "lightspeed.plots".
2013.1
2013.1.37
Bug fixReal-time Engine
LCD-5175
Fixed an issue in plot layers that caused objects to disappear.
This happened sometimes when selecting, de-selecting and re-selecting objects.
2013.1.27
ImprovementReal-time Engine
LCD-4997
The realtime.lightspeed.clusterLabeling was added. This sample is the Lightspeed version of the GXY
clusterLabeling sample which shows how label clusters can be decluttered dynamically.
2013.1.26
Bug fixReal-time Engine
LCD-5043
In rare cases, TLspContinuousLabelingAlgorithm could throw a NPE when using sticky
labels (see ALspLabelLocation#setSticky(boolean)).
2013.1.24
Bug fixReal-time Engine
LCD-4991
Plot layers could in some cases fail to initialize their data structure when they were not in a view.
2013.1.13
Bug fixReal-time Engine
ALcdTimeIndexedSimulatorModel: the init method now takes the appropriate write locks before modifying the given
track model.
Bug fixReal-time Engine
LCD-4815
ALcdTimeIndexedSimulatorModel: the write lock on the track model is now unlocked before firing the model changes.
This prevents a certain class of dead locks.
Bug fixReal-time Engine
LCD-4804
TLcdTrackModel: the model bounds now also include the height information when the contained elements also contain
height.
2013.1.11
Bug fixReal-time Engine
When visualizing data using a plot layer (TLspPlotLayerBuilder) in 3D, the data could be culled sooner than needed.
2013.1.07
ImprovementReal-time Engine
LCD-4696
Label editing is now supported for plot layers. See TLspPlotLayerBuilder#labelEditable()
and TLspPlotLayerBuilder#labelEditor().
Bug fixReal-time Engine
LCD-4329
When using the continuous labeling algorithm and configuring parent and child labels, the
child labels could push the parent labels away.
2013.0
2013.0.07
Bug fixReal-time Engine
LCD-4030
ALcdTimeIndexedSimulatorModel: fixed exception when you removed the last track with the
removeTracks method.
2013.0.01
ImprovementReal-time Engine
LCD-3861
TLcdSimulator: now responds quicker to heavy changes in work load in combination with low frame
rates.
Bug fixReal-time Engine
LCD-3927
TLspPlotLayerBuilder: the plot icons could be too small when printing a plot layer on some
configurations.
2013.0
ImprovementReal-time Engine
LCD-3711
TLcdSimulator: frame rate is now more stable during playback, reducing jitter.
ImprovementReal-time Engine
The ALcdTimeIndexedSimulatorModel now has support to add and remove tracks after initialization. This allows you to
handle certain changes, without having to reinitialize.
2012.1
2012.1.15
Bug fixReal-time Engine
LCD-3183
TLspPlotLayerBuilder: altitude exaggeration did not work when switching from 2D to 3D without
changing the world reference.
2012.1.14
Bug fixReal-time Engine
LCD-3678
TLspPlotLayerBuilder: fixed exception that could occur when selecting many plots.
2012.1.13
Bug fixReal-time Engine
LCD-3520
TLspPlotLayerBuilder: plot selection did not work correctly when using a style target provides
that does not provide exactly 1 geometry for each domain object.
2012.1.11
Bug fixReal-time Engine
LCD-3575
TLspPlotLayerBuilder: models with bounds whose width or height is zero were not painted.
2012.1.10
Bug fixReal-time Engine
TLspPlotLayerBuilder: fixed a potential memory leak if multiple layers are created using
the same styler.
2012.1.08
Bug fixReal-time Engine
LCD-3535
TLspPlotLayerBuilder: the icon property for the layer is now taken into account.
Bug fixReal-time Engine
LCD-3534
Plot layers did not handle style target providers with a reference different from the model
reference correctly.
Bug fixReal-time Engine
LCD-3477
Plot layer icons are now also pixel-perfect in a geocentric reference if their scale expression
returns 1.
2012.1.06
Bug fixReal-time Engine
LCD-3491
Plot layers could throw errors when using certain combinations of expressions, in particular
when using TLcdExpressionFactory.sub().
2012.1.03
Bug fixReal-time Engine
LCD-3414
The style of selected plots was sometimes not updated correctly.
2012.1
ImprovementReal-time Engine
A new, high-performing track visualization layer was added. It can handle large static point datasets.
See developer guide or TLspPlotLayerBuilder javadoc for details.
ImprovementReal-time Engine
LCD-2601
TLcdTrackModel: the memory usage of TLcdTrackModel has been lowered.
ImprovementReal-time Engine
LMAP-4013, LCD-8
Various configuration options were added to TLcdGXYContinuousLabelingAlgorithm and TLspContinuousLabelingAlgorithm:
- Use setClampOnScreenEdges to specify if labels can be partially outside the view.
- Use setLabelMovementBehavior to specify when labels should be moved.
- Use setMinDistance to ensure labels are never too close to their object.
- Use setMaxDistance to ensure labels are never too far from their object.
- Use setDisallowedAngle to specify where a label can be positioned around its object.
- Use setPadding to add space between labels.
2012.0
2012.0.17
Bug fixReal-time Engine
LCD-2846
Labels placed using continuous decluttering would sometimes jitter.
2012.0.13
Bug fixReal-time Engine
LCD-2738
TLcdSimulator: the 'playInLoop' property no longer causes exceptions when the simulator model is
empty.
2012.0.09
Bug fixReal-time Engine
LCD-2605
TLcdSimulatorModelList: the begin- and end-date are now always in the proper order when the
corresponding property change events are fired.
Bug fixReal-time Engine
LCD-2595
TLcdSimulatorModelList: the old and new values of the property change events for the track models
are now filled in.
Bug fixReal-time Engine
LCD-2594
TLcdTimeFilteredSimulatorModel: property change events are now fired appropriately with the
correct information.
2012.0.06
ImprovementReal-time Engine
LCD-1653
ALcdTimeIndexedSimulatorModel no longer fires change events for empty models.
Bug fixReal-time Engine
LCD-58, LMAP-5777
ALcdTimeIndexedSimulatorModel: the selection of a layer is no longer cleared when making large
time jumps.
2012.0
ImprovementReal-time Engine
TLcdSimulator now supports simulations in both GXY and Lightspeed views. For using TLcdSimulator
in combination with a Lightspeed view. The following methods were added:
- get/setLspLayerFactory: For retrieving/setting the Lightspeed layer factory that creates the
simulation layers for the Lightspeed view(s)
- getLspView: For retrieving the Lightspeed views set on the simulator
- add/removeView: For adding/removing ILcdViews on which the simulator should display the simulation
- getSimulationLspLayers: For retreiving all simulation layers pertaining to a given Lightspeed view
- is/setPlayInLoop: For checking/setting whether the simulator should play the simulation in a loop
11.0
11.0
ImprovementReal-time Engine
LMAP-3082
TLcdTrackModel : the method applyOnInteract2DBounds (for example used to paint) now works faster,
especially when the number of rows and columns is high.
10.1
10.1.10
Bug fixReal-time Engine
LMAP-5239
TLcdSimulator now always correctly restores the autoUpdate property of the associated views.
Bug fixReal-time Engine
TLcdSimulator : when the simulator model is initialized with a begin date in the past, the
simulator will now reset to the start date of the simulator model instead of the end date.
10.1.01
Bug fixReal-time Engine
LMAP-4862
A disabled TLcdSimulatorTimeSlider no longer gets enabled by simply dragging on it with the
mouse.
10.0
10.0.05
Bug fixReal-time Engine
LMAP-4355
TLcdTrackModel.contains always returned false.
9.1
9.1.18
Bug fixReal-time Engine
LMAP-4007
TLcdContinuousDeclutteringLabelPainter could throw a NoSuchElementException when using it as
a layer label painter.
9.1.16
Bug fixReal-time Engine
LMAP-3983
TLcdTrackModel no longer throws exceptions when it is serialized.
9.1.14
ImprovementReal-time Engine
TLcdContinuousDeclutteringLabelPainter now has a forced painting priority threshold. When the
priority of a label is higher than this threshold, it is always drawn., even when it should be
dropped because of the max label coverage option.
ImprovementReal-time Engine
TLcdContinuousDeclutteringLabelPainter now can use a label priority provider that can make
a distinction between labels with different label and sublabel indices. This is done by passing
a ALcdGXYLabelPriorityProvider to TLcdContinuousDeclutteringLabelPainter#setLabelPriorityProvider().
9.1.07
Bug fixReal-time Engine
LMAP-3846
The realtime.offsetIcon sample no longer tries to declutter before the previous declutter
operation is finished, preventing several exceptions.
9.1
ImprovementReal-time Engine
TLcdSimulator: when the endDate changes to a later date, the date is no longer updated to the new
endDate when it used to be at the old endDate. This applies for the beginDate as well.
ImprovementReal-time Engine
LMAP-3381
TLcdContinuousDeclutteringLabelPainter: now has a new property setMaxLabelCoverage to allow
dropping labels when they start to occupy too much of the view's surface.
Bug fixReal-time Engine
TLcdContinuousDeclutteringLabelPainter: no longer throws IndexOutOfBoundsExceptions when multiple
obstacle providers are added.
9.0
9.0.02
Bug fixReal-time Engine
LMAP-2746, LMAP-2962
TLcdSimulatorTimeSlider: the slider internally no longer uses the full Integer range as that
was susceptible to integer overflows. The minimum and maximum of the slider are now only
Integer.MAX_VALUE / 2 apart.
9.0
ImprovementReal-time Engine
LMAP-3046
TLcdSimulator: the simulator no longer unnecessarily stops when the begin- or end-date of the
associated ILcdSimulatorModel changes. If the current date is still within the timeframe
of the changed begin- and endtime, the current date no longer changes.
8.2
8.2.19
Bug fixReal-time Engine
LMAP-3075
TLcdContinuousDeclutteringLabelPainter: after deleting all objects, it was still possible to
re-select them. If at least one object wasn't deleted, this didn't occur.
8.2.16
ImprovementReal-time Engine
LMAP-3063
TLcdSimulator now has an overridable method #currentTime, allowing you to synchronize the
clock of the simulator to an external clock (such as, for example, an audio feed).
8.2.14
Bug fixReal-time Engine
TLcdSimulator no longer keeps a reference to the previous track models when the simulator model
is set to 'null'.
8.1
8.1.11
Bug fixReal-time Engine
LMAP-2825
TLcdSimulatorModelList: did not set the date of newly added ILcdSimulatorModel's, leaving
it in an inconsistent state: not all sub-models necessarily had the same date.
8.1.03
Bug fixReal-time Engine
LMAP-2746
TLcdSimulatorTimeSlider: this slider can now also work with simulator models whose begin
and end date are more than Integer.MAX_VALUE milliseconds apart.
7.2
7.2.09
Bug fixReal-time Engine
TLcdSimulator no longer throws ArithmeticExceptions when configured for maximum framerate.
7.2
ImprovementReal-time Engine
TLcdContinuousDeclutteringLabelPainter: now moves the anchor point of the label to the desired label location, where
this used to be the top left of the label bounds.
ImprovementReal-time Engine
ALcdTimeIndexedSimulatorModel was added: it is an abstract extension of ALcdSimulatorModel that was designed to
handle
large data sets, as its time performance is generally related to the amount of changes that are required, not to the
total amount of data.
ImprovementReal-time Engine
ALcdSimulatorModel was added: it is an abstract implementation of ILcdSimulatorModel that conveniently handles
the properties of the interface and their property changes.
Bug fixReal-time Engine
TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which
isLabeled() returned false, and isSelectionLabeled() returned true, invalid warnings were produced.
Bug fixReal-time Engine
TLcdContinuousDeclutteringLabelPainter: If it was used as ILcdGXYLayerLabelPainter on an TLcdGXYLayer for which
isLabeled() returned false, and isSelectionLabeled() returned true, ALcdLabelLocations.setPainted was not called
for the labels it had painted.
Bug fixReal-time Engine
TLcdContinuousDeclutteringLabelPainter: no longer tries to spread sub-labels of the same label around. Instead, it
respects their relative locations, and they are moved as one single unit.
7.0
7.0
ImprovementReal-time Engine
A new decluttering algorithm was added, specially designed to label moving tracks.
The labels move in a continuous fashion, and sudden jumps are avoided.
Check out TLcdContinuousDeclutteringLabelPainter or the samples for more information.
6.0
6.0.04
Bug fixReal-time Engine
The previous fix for this bug caused a severe performance degradation, checking whether the element changed was
in the model through its integer index. The check is now performed using the spatial index of an element.
Bug fixReal-time Engine
TLcdSimulator no longer throws a NullPointerException when setting the date before setting a simulator model.
6.0
Upgrade considerationReal-time Engine
TLcdSimulator fired events which were not according to the standard. Events for these properties used to
start with capitals: maxCPUUsage, delayBetweenUpdateMs. This change will not have an effect at compile time, but may
appear at runtime. Adapt the property change listeners to either ignore the case or to use the new property name.
5.1
5.1.07
Bug fixReal-time Engine
TLcdTrackModel now implements the method allElementsChanged. This method rearranges the objects so that they
are put in the correct bucket. In absence of this method objects were not painted when moving
from one bucket to another with the original bucket not showing in the view while the new bucket
shwoing in the view.
5.1.05
Bug fixReal-time Engine
TLcdSimulator now fires property change events for all of its properties.
5.1.04
Bug fixReal-time Engine
TLcdTrackModel now checks whether it contains an object when elementChanged is called. Previously objects could have
been added to the model this way.
4.2
4.2.06
Bug fixReal-time Engine
com.luciad.realtime.TLcdTrackModel threw a NullPointerException when
calling removeAllElements.
4.0
4.0
ImprovementReal-time Engine
com.luciad.realtime.TLcdTrackModel is an com.luciad.model.ILcdModel
implementation that has less overhead than a com.luciad.model.TLcd2DBoundsIndexedModel for dynamic data without
having to paint all objects in a model like a com.luciad.model.TLcdVectorModel.
ImprovementReal-time Engine
com.luciad.realtime.TLcdSimulatorModelList is a composite
com.luciad.realtime.ILcdSimulatorModelList implementation.
3.2
3.2.14
ImprovementReal-time Engine
com.luciad.realtime.TLcdSimulator handles changes in the
simulator model by listening to change events of the property trackmodel.
This avoids the need of setting a new track model every time a change occurs.
3.2
ImprovementReal-time Engine
com.luciad.realtime.TLcdSimulator has a property to allow the application
to manage the number of cached background layers.
3.1
3.1.16
ImprovementReal-time Engine
com.luciad.realtime.TLcdSimulator sets autoUpdate to false before calling
setDate on the simulator model.
This allows simulator models to generate model changed events without
causing the view to repaint itself.