Can I add individual points to the wall positions?

1. A concise explanation of the problem you're experiencing.

I have an application where I show the entity path traversed using the wall element in Entity. The path positions are added one by one to the array of positions, each second on position. The path traversed is static.
There seems to be no method to add a single position to an wall element. I can only assign the whole array. And over time I notice the simulation slow down, maybe because the whole array of positions is copied into the internal data structure, and/or the whole path is redrawn?

2. A minimal code example. If you've found a bug, this helps us reproduce and repair it.

Below a code snippet, called every second via a setInterval:

                for (var k in viewer.entities.values) {
                    var entity = viewer.entities.values[k];

                    var worldLocation = entity.spatial.data.WorldLocation;
                    entity.wallPositions.push(Cesium.Cartesian3.fromElements(worldLocation.X, worldLocation.Y, worldLocation.Z));
                    entity.wall.positions = entity.wallPositions;
                }

The "entity.spatial" is my addition to an entity, containing spatial data (position, and 1st/2nd order derivatives).

In "entity.wallPositions" I keep the array of positions, which grows steadily over time.

The wall positions are set in "entity.wall.positions = entity.wallPositions". I have the impression this triggers an array copy further down in the library code. This is in my view not needed, since only one position is added.

3. Context. Why do you need to do this? We might know a better way to accomplish your goal.

I tried Cesium.SampledPositionProperty for wall positions (so I can add one sample at a time), but that does not seem to work.

Issue is performance. System slows down. I notice that the entities in the browser fall behind on the back-end simulation server (which feeds the browser with spatial data via a websocket connection, see https://groups.google.com/forum/#!topic/cesium-dev/CmaPzdlQdfQ).

4. The Cesium version you're using, your operating system and browser.

Cesium-1.53, Windows 10, Google Chrome / FireFox.

I do believe by default, all Entity properties are considered constant, so even if you push a new point to the wall position array, it won’t trigger an update. SampledPositionProperty should work.

Can you post a Sandcaste/the code you’ve tried? I’m not sure 100% sure if updating the positions will recreate the entire geometry or if it will only do a partial update. If it’s the former we should open a GitHub issue because it sounds like it could be worth looking into.