/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.badlogic.gdx.vr;
import android.app.Activity;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.LifecycleListener;
import com.badlogic.gdx.math.Matrix4;
import com.google.vrtoolkit.cardboard.DistortionRenderer;
import com.google.vrtoolkit.cardboard.HeadMountedDisplay;
import com.google.vrtoolkit.cardboard.sensors.HeadTracker;
/**
* @author Daniel Holderbaum
*/
public class CardboardImplementation implements VirtualRealityImplementation {
private HeadTracker headTracker;
public CardboardImplementation(Activity activity) {
VirtualReality.implementation = this;
VirtualReality.head = new Head();
VirtualReality.body = new Body();
VirtualReality.renderer = new VirtualRealityRenderer();
headTracker = new HeadTracker(activity);
headTracker.startTracking();
HeadMountedDisplay hmd = new HeadMountedDisplay(activity.getWindowManager().getDefaultDisplay());
VirtualReality.headMountedDisplay = new CardboardHMD(hmd);
VirtualReality.distortionRenderer = new CardboardDistortionRenderer(hmd, new DistortionRenderer());
Gdx.app.addLifecycleListener(new LifecycleListener() {
@Override
public void resume() {
}
@Override
public void pause() {
}
@Override
public void dispose() {
headTracker.stopTracking();
}
});
}
@Override
public boolean supportsAntiDistortion() {
return true;
}
@Override
public void addDeviceListener(VirtualRealityDeviceListener listener) {
// TODO Auto-generated method stub
}
@Override
public void removeDeviceListener(VirtualRealityDeviceListener listener) {
// TODO Auto-generated method stub
}
private static final Matrix4 HEAD_ROTATION = new Matrix4();
@Override
public void update(float deltaTime) {
int writeOffset = 0;
// we need to supply a 4x4, column major matrix
headTracker.getLastHeadView(HEAD_ROTATION.getValues(), writeOffset);
HEAD_ROTATION.getRotation(VirtualReality.head.getOrientation(), true);
}
}