package org.deviceconnect.android.deviceplugin.theta.core.sensor;
import org.deviceconnect.android.deviceplugin.theta.utils.Quaternion;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public abstract class AbstractHeadTracker implements HeadTracker {
private final List<HeadTrackingListener> mListeners = new ArrayList<HeadTrackingListener>();
@Override
public void registerTrackingListener(final HeadTrackingListener listener) {
synchronized (mListeners) {
mListeners.add(listener);
}
}
@Override
public void unregisterTrackingListener(final HeadTrackingListener listener) {
synchronized (mListeners) {
for (Iterator<HeadTrackingListener> it = mListeners.iterator(); it.hasNext(); ) {
if (it.next() == listener) {
it.remove();
}
}
}
}
protected void notifyHeadRotation(final Quaternion rotation) {
synchronized (mListeners) {
for (HeadTrackingListener listener : mListeners) {
listener.onHeadRotated(rotation);
}
}
}
public int getListenerCount() {
return mListeners.size();
}
}