/*******************************************************************************
* 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 com.badlogic.gdx.Gdx;
import com.badlogic.gdx.LifecycleListener;
import com.oculusvr.capi.Hmd;
import com.oculusvr.capi.OvrLibrary;
/**
* @author Daniel Holderbaum
*/
public class OculusImplementation implements VirtualRealityImplementation {
private Hmd hmd;
public OculusImplementation() {
VirtualReality.implementation = this;
VirtualReality.head = new Head();
VirtualReality.body = new Body();
VirtualReality.renderer = new VirtualRealityRenderer();
OvrLibrary.INSTANCE.ovr_Initialize();
hmd = OvrLibrary.INSTANCE.ovrHmd_CreateDebug(0);
VirtualReality.headMountedDisplay = new OculusHMD(hmd);
Gdx.app.addLifecycleListener(new LifecycleListener() {
@Override
public void resume() {
}
@Override
public void pause() {
}
@Override
public void dispose() {
OvrLibrary.INSTANCE.ovr_Shutdown();
}
});
}
@Override
public boolean supportsAntiDistortion() {
return true;
}
@Override
public void addDeviceListener(VirtualRealityDeviceListener listener) {
}
@Override
public void removeDeviceListener(VirtualRealityDeviceListener listener) {
}
/**
* TODO: move this somewhere else
*/
@Override
public void update(float deltaTime) {
// TODO: can each eye have a different orientation here?
TypeTransformer.transform(hmd.getEyePose(0).Orientation, VirtualReality.head.getOrientation());
TypeTransformer.transform(hmd.getEyePose(1).Orientation, VirtualReality.head.getOrientation());
TypeTransformer.transform(hmd.getEyePose(0).Position, VirtualReality.head.getPosition());
TypeTransformer.transform(hmd.getEyePose(1).Position, VirtualReality.head.getPosition());
}
}