Skip to content

Commit 06d23f1

Browse files
author
Hannah
authoredMar 2, 2017
Merge pull request #5060 from AnalyticalGraphicsInc/trackedEntityChangedEvent
Add event for trackedEntity changes.
2 parents 9687c3e + 2544dab commit 06d23f1

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed
 

‎CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Change Log
33

44
### 1.32 - 2017-04-03
55

6+
* Added the event `Viewer.trackedEntityChanged`, which is raised when the value of `viewer.trackedEntity` changes. [#5060](https://github.com/AnalyticalGraphicsInc/cesium/pull/5060)
67
* Fix crunch compressed textures in IE11. [#5057](https://github.com/AnalyticalGraphicsInc/cesium/pull/5057)
78

89
### 1.31 - 2017-03-01

‎Source/Widgets/Viewer/Viewer.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to
664664
this._zoomPromise = undefined;
665665
this._zoomOptions = undefined;
666666
this._selectedEntityChanged = new Event();
667+
this._trackedEntityChanged = new Event();
667668

668669
knockout.track(this, ['_trackedEntity', '_selectedEntity', '_clockTrackedDataSource']);
669670

@@ -1171,12 +1172,13 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to
11711172

11721173
this._entityView = undefined;
11731174
this.camera.lookAtTransform(Matrix4.IDENTITY);
1174-
return;
1175+
} else {
1176+
//We can't start tracking immediately, so we set a flag and start tracking
1177+
//when the bounding sphere is ready (most likely next frame).
1178+
this._needTrackedEntityUpdate = true;
11751179
}
11761180

1177-
//We can't start tracking immediately, so we set a flag and start tracking
1178-
//when the bounding sphere is ready (most likely next frame).
1179-
this._needTrackedEntityUpdate = true;
1181+
this._trackedEntityChanged.raiseEvent(value);
11801182
}
11811183
}
11821184
},
@@ -1218,6 +1220,17 @@ Either specify options.terrainProvider instead or set options.baseLayerPicker to
12181220
return this._selectedEntityChanged;
12191221
}
12201222
},
1223+
/**
1224+
* Gets the event that is raised when the tracked entity chages
1225+
* @memberof Viewer.prototype
1226+
* @type {Event}
1227+
* @readonly
1228+
*/
1229+
trackedEntityChanged : {
1230+
get : function() {
1231+
return this._trackedEntityChanged;
1232+
}
1233+
},
12211234
/**
12221235
* Gets or sets the data source to track with the viewer's clock.
12231236
* @memberof Viewer.prototype

‎Specs/Widgets/Viewer/ViewerSpec.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ defineSuite([
3333
'Widgets/SceneModePicker/SceneModePicker',
3434
'Widgets/SelectionIndicator/SelectionIndicator',
3535
'Widgets/Timeline/Timeline'
36-
], function(
36+
], 'Widgets/Viewer/Viewer', function(
3737
Cartesian3,
3838
ClockRange,
3939
ClockStep,
@@ -850,6 +850,30 @@ defineSuite([
850850
viewer.destroy();
851851
});
852852

853+
it('raises an event when the tracked entity changes', function() {
854+
var viewer = createViewer(container);
855+
856+
var dataSource = new MockDataSource();
857+
viewer.dataSources.add(dataSource);
858+
859+
var entity = new Entity();
860+
entity.position = new ConstantPositionProperty(new Cartesian3(123456, 123456, 123456));
861+
862+
dataSource.entities.add(entity);
863+
864+
var myEntity;
865+
viewer.trackedEntityChanged.addEventListener(function(newValue) {
866+
myEntity = newValue;
867+
});
868+
viewer.trackedEntity = entity;
869+
expect(myEntity).toBe(entity);
870+
871+
viewer.trackedEntity = undefined;
872+
expect(myEntity).toBeUndefined();
873+
874+
viewer.destroy();
875+
});
876+
853877
it('selectedEntity sets InfoBox properties', function() {
854878
var viewer = createViewer(container);
855879

0 commit comments

Comments
 (0)
Please sign in to comment.