package org.deviceconnect.android.deviceplugin.theta.profile; import org.deviceconnect.android.deviceplugin.theta.core.SphericalViewParam; import org.deviceconnect.android.deviceplugin.theta.core.SphericalViewRenderer; import org.deviceconnect.android.deviceplugin.theta.utils.Vector3D; abstract class AbstractProjector implements Projector, SphericalViewRenderer.SurfaceListener{ protected SphericalViewRenderer mRenderer; protected ProjectionScreen mScreen; protected boolean mIsChangedImageSize = true; @Override public SphericalViewRenderer getRenderer() { return mRenderer; } @Override public void setRenderer(final SphericalViewRenderer renderer) { mRenderer = renderer; } @Override public void setScreen(final ProjectionScreen screen) { mScreen = screen; } @Override public void setParameter(final SphericalViewParam param) { SphericalViewRenderer renderer = getRenderer(); SphericalViewRenderer.CameraBuilder camera = new SphericalViewRenderer.CameraBuilder(renderer.getCamera()); camera.setFov((float) param.getFOV()); camera.setPosition(new Vector3D((float) param.getCameraX(), (float) param.getCameraY(), (float) param.getCameraZ())); camera.rotateByEulerAngle( (float) param.getCameraRoll(), (float) param.getCameraYaw(), (float) param.getCameraPitch() ); renderer.setCamera(camera.create()); renderer.setSphereRadius((float) param.getSphereSize()); renderer.setScreenSettings(param.getWidth(), param.getHeight(), param.isStereo()); } @Override public void onSurfaceChanged(final int width, final int height, final boolean isStereo) { mIsChangedImageSize = true; } }