@Override public void onNewData(ByteBuffer decompressed) { long timestamp = decompressed.getLong(); LongBuffer data = decompressed.asLongBuffer(); for (int i = 0; i < variables.size(); i++) { YoVariable<?> variable = variables.get(i); long previousValue = variable.getValueAsLongBits(); long newValue = data.get(); variable.setValueFromLongBits(newValue, false); if (previousValue != newValue) { ArrayList<VariableChangedListener> changedListeners = variable.getVariableChangedListeners(); if (changedListeners != null) { for (int listener = 0; listener < changedListeners.size(); listener++) { VariableChangedListener changedListener = changedListeners.get(listener); if (!(changedListener instanceof LogControlVariableChangeListener)) { changedListener.variableChanged(variable); } } } } } for (int i = 0; i < jointStates.size(); i++) { jointStates.get(i).update(data); } listener.receivedTimestampAndData(timestamp, decompressed); }