package de.rwth.setups;
import geo.GeoObj;
import gl.GL1Renderer;
import gl.GLFactory;
import gui.GuiSetup;
import gui.RadarView;
import system.DefaultARSetup;
import util.Vec;
import worldData.SystemUpdater;
import worldData.World;
import android.app.Activity;
import android.util.Log;
import commands.Command;
import commands.ui.CommandShowToast;
import components.SimpleTooFarAwayComp;
public class FarAwayPOIScenarioSetup extends DefaultARSetup {
private String LOG_TAG = "FarAwayPOIScenarioSetup";
private RadarView radar;
@Override
public void _a_initFieldsIfNecessary() {
super._a_initFieldsIfNecessary();
radar = new RadarView(getActivity(), (int) (getScreenWidth() / 3),
getCamera(), getWorld().getAllItems());
}
@Override
public void addObjectsTo(GL1Renderer renderer, World world,
final GLFactory objectFactory) {
GeoObj o = new GeoObj();
o.setComp(objectFactory.newCube());
// place 20 meters north of the user:
o.setVirtualPosition(new Vec(0, 20, 0));
o.setComp(new SimpleTooFarAwayComp(30, getCamera(), getActivity()));
world.add(o);
}
@Override
public void _d_addElementsToUpdateThread(SystemUpdater updater) {
super._d_addElementsToUpdateThread(updater);
updater.addObjectToUpdateCycle(radar);
}
@Override
public void _e2_addElementsToGuiSetup(GuiSetup guiSetup, Activity activity) {
super._e2_addElementsToGuiSetup(guiSetup, activity);
guiSetup.addViewToTop(radar);
guiSetup.addButtonToBottomView(new Command() {
@Override
public boolean execute() {
// float[] rayPos = new float[4];
// float[] rayDir = new float[4];
CommandShowToast.show(getActivity(), "altitude="
+ getCamera().getGPSPositionVec().z);
return true;
}
}, "Show altitude");
guiSetup.addButtonToBottomView(new Command() {
@Override
public boolean execute() {
Vec pos = getCamera().getGPSPositionVec();
Log.d(LOG_TAG, "Placing object at " + pos);
final GeoObj o = new GeoObj(pos.y, pos.x, pos.z);
o.setComp(GLFactory.getInstance().newArrow());
o.setComp(new SimpleTooFarAwayComp(30, getCamera(),
getActivity()));
o.setOnClickCommand(new Command() {
@Override
public boolean execute() {
CommandShowToast.show(getActivity(), "o.getAltitude()="
+ o.getAltitude());
return true;
}
});
Log.d(LOG_TAG, "virtual pos=" + o.getVirtualPosition());
Log.d(LOG_TAG, "cam pos=" + getCamera().getPosition());
getWorld().add(o);
return true;
}
}, "Place GeoObj");
}
}