Search code examples
javascriptcesiumjs

Pause/stop/Continue the vehicle moving entity


How can I pause/stop the vehicle moving entity (to stop the vehicle from the moving) by calling another function? Cannot seem to use viewModel.pauseViewModel.command();. Appreciate if anyone can demonstrate how to provide a pause & continue for moving entity.

function togglesimulation() {


    Cesium.Math.setRandomNumberSeed(3);


    var start = Cesium.JulianDate.fromDate(new Date(2021, 6, 29, 16));
    var stop = Cesium.JulianDate.addSeconds(start, 300, new Cesium.JulianDate);

    //Make sure viewer is at the desired time.
    var clock = new Cesium.Clock();
    viewer.clock.startTime = start.clone();
    viewer.clock.stopTime = stop.clone();
    viewer.clock.currentTime = start.clone();
    viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; // stop at the end
    viewer.clock.multiplier = clockmultiplier;
    viewer.clock.shouldAnimate = true;


    var position = new Cesium.SampledPositionProperty();
    var time = Cesium.JulianDate.addSeconds(start, 120, new Cesium.JulianDate());

    var timeStepInSeconds = 5;
    var newPositions = mergedgeom1;


    for (var i = 0; i < newPositions.length; i++) {
        var poss = Cesium.Cartesian3.fromDegrees(parseFloat(newPositions[i][0]), parseFloat(newPositions[i][1])); //height
        var time = Cesium.JulianDate.addSeconds(start, i * timeStepInSeconds, new Cesium.JulianDate());


        position.addSample(time, poss);
    }


    var entity = viewer.entities.add({
        availability: new Cesium.TimeIntervalCollection([
            new Cesium.TimeInterval({
                start: start,
                stop: stop,
            }),
        ]),
        model: {
            uri: "../asset/vehicle/CesiumMilkTruck/CesiumMilkTruck.glb",
            minimumPixelSize: 64,
        },
        viewFrom: new Cesium.Cartesian3(-100.0, 0.0, 100.0),
        position: position,
        orientation: new Cesium.VelocityOrientationProperty(position),
    });
    viewer.trackedEntity = entity;

    var scene = viewer.scene;

}

Solution

  • Pause the clock with:

    viewer.clock.shouldAnimate = false;
    

    You can un-pause later with:

    viewer.clock.shouldAnimate = true;