/* * Copyright (C) 2010- Peer internet solutions * * This file is part of mixare. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/> */ package org.mixare; import org.mixare.lib.MixContextInterface; import org.mixare.lib.MixStateInterface; import org.mixare.lib.MixUtils; import org.mixare.lib.render.Matrix; import org.mixare.lib.render.MixVector; /** * This class calculates the bearing and pitch out of the angles */ public class MixState implements MixStateInterface{ public static int NOT_STARTED = 0; public static int PROCESSING = 1; public static int READY = 2; public static int DONE = 3; int nextLStatus = MixState.NOT_STARTED; String downloadId; private float curBearing; private float curPitch; private boolean detailsView; public boolean handleEvent(MixContextInterface ctx, String onPress) { if (onPress != null && onPress.startsWith("webpage")) { try { String webpage = MixUtils.parseAction(onPress); this.detailsView = true; ctx.loadMixViewWebPage(webpage); } catch (Exception ex) { ex.printStackTrace(); } } return true; } public float getCurBearing() { return curBearing; } public float getCurPitch() { return curPitch; } public boolean isDetailsView() { return detailsView; } public void setDetailsView(boolean detailsView) { this.detailsView = detailsView; } public void calcPitchBearing(Matrix rotationM) { MixVector looking = new MixVector(); rotationM.transpose(); looking.set(1, 0, 0); looking.prod(rotationM); this.curBearing = (int) (MixUtils.getAngle(0, 0, looking.x, looking.z) + 360 ) % 360 ; rotationM.transpose(); looking.set(0, 1, 0); looking.prod(rotationM); this.curPitch = -MixUtils.getAngle(0, 0, looking.y, looking.z); } }