Started programming the calibration state.

This commit is contained in:
2014-04-28 10:14:01 -04:30
parent e93d227b62
commit 139bb62067
7 changed files with 168 additions and 155 deletions

View File

@@ -16,7 +16,6 @@
package ve.ucv.ciens.ccg.nxtar;
import ve.ucv.ciens.ccg.nxtar.interfaces.CVProcessor;
import ve.ucv.ciens.ccg.nxtar.interfaces.MulticastEnabler;
import ve.ucv.ciens.ccg.nxtar.interfaces.NetworkConnectionListener;
import ve.ucv.ciens.ccg.nxtar.interfaces.OSFunctionalityProvider;
import ve.ucv.ciens.ccg.nxtar.network.RobotControlThread;
@@ -95,11 +94,10 @@ public class NxtARCore extends Game implements NetworkConnectionListener{
// Assorted fields.
public SpriteBatch batch;
public CVProcessor cvProc;
private OSFunctionalityProvider toaster;
private OSFunctionalityProvider osFunction;
// Networking related fields.
private int connections;
private MulticastEnabler mcastEnabler;
private ServiceDiscoveryThread serviceDiscoveryThread;
private VideoStreamingThread videoThread;
private RobotControlThread robotThread;
@@ -124,17 +122,10 @@ public class NxtARCore extends Game implements NetworkConnectionListener{
super();
connections = 0;
try{
this.toaster = (OSFunctionalityProvider)concreteApp;
this.osFunction = (OSFunctionalityProvider)concreteApp;
}catch(ClassCastException cc){
Gdx.app.debug(TAG, CLASS_NAME + ".Main() :: concreteApp does not implement the Toaster interface. Toasting disabled.");
this.toaster = null;
}
try{
this.mcastEnabler = (MulticastEnabler)concreteApp;
}catch(ClassCastException cc){
Gdx.app.error(TAG, CLASS_NAME + ".Main() :: concreteApp does not implement MulticastEnabler. Quitting.");
Gdx.app.exit();
this.osFunction = null;
}
try{
@@ -179,7 +170,7 @@ public class NxtARCore extends Game implements NetworkConnectionListener{
}
// Start networking.
mcastEnabler.enableMulticast();
osFunction.enableMulticast();
Gdx.app.debug(TAG, CLASS_NAME + ".create() :: Creating network threads");
serviceDiscoveryThread = ServiceDiscoveryThread.getInstance();
@@ -326,16 +317,16 @@ public class NxtARCore extends Game implements NetworkConnectionListener{
if(connections >= 3){
Gdx.app.debug(TAG, CLASS_NAME + ".networkStreamConnected() :: Stopping service broadcast.");
serviceDiscoveryThread.finish();
mcastEnabler.disableMulticast();
toaster.showShortToast("Client connected");
osFunction.disableMulticast();
osFunction.showShortToast("Client connected");
((MainMenuStateBase)states[game_states_t.MAIN_MENU.getValue()]).onClientConnected();
}
}
public void toast(String msg, boolean longToast){
if(toaster != null){
if(longToast) toaster.showLongToast(msg);
else toaster.showShortToast(msg);
if(osFunction != null){
if(longToast) osFunction.showLongToast(msg);
else osFunction.showShortToast(msg);
}
}
}

View File

@@ -23,4 +23,6 @@ public interface CVProcessor {
}
public CVData findMarkersInFrame(byte[] frame, int w, int h);
public void calibrateCamera();
}

View File

@@ -31,7 +31,7 @@ public abstract class BaseState implements Screen, ControllerListener, InputProc
/* STATE METHODS */
public abstract void onStateSet();
public abstract void onStateUnset();
/* SCREEN METHODS*/
@Override
public abstract void render(float delta);
@@ -50,39 +50,83 @@ public abstract class BaseState implements Screen, ControllerListener, InputProc
/* INPUT PROCESSOR METHODS. */
@Override
public abstract boolean keyDown(int keycode);
public boolean keyDown(int keycode){
return false;
};
@Override
public abstract boolean keyUp(int keycode);
public boolean keyUp(int keycode){
return false;
};
@Override
public abstract boolean keyTyped(char character);
public boolean keyTyped(char character){
return false;
};
@Override
public abstract boolean touchDown(int screenX, int screenY, int pointer, int button);
public boolean touchDown(int screenX, int screenY, int pointer, int button){
return false;
};
@Override
public abstract boolean touchUp(int screenX, int screenY, int pointer, int button);
public boolean touchUp(int screenX, int screenY, int pointer, int button){
return false;
};
@Override
public abstract boolean touchDragged(int screenX, int screenY, int pointer);
public boolean touchDragged(int screenX, int screenY, int pointer){
return false;
};
@Override
public abstract boolean mouseMoved(int screenX, int screenY);
public boolean mouseMoved(int screenX, int screenY){
return false;
};
@Override
public abstract boolean scrolled(int amount);
public boolean scrolled(int amount){
return false;
};
/* CONTROLLER LISTENER METHODS. */
@Override
public abstract void connected(Controller controller);
public void connected(Controller controller){ };
@Override
public abstract void disconnected(Controller controller);
public void disconnected(Controller controller){ };
@Override
public abstract boolean buttonDown(Controller controller, int buttonCode);
public boolean buttonDown(Controller controller, int buttonCode){
return false;
};
@Override
public abstract boolean buttonUp(Controller controller, int buttonCode);
public boolean buttonUp(Controller controller, int buttonCode){
return false;
};
@Override
public abstract boolean axisMoved(Controller controller, int axisCode, float value);
public boolean axisMoved(Controller controller, int axisCode, float value){
return false;
};
@Override
public abstract boolean povMoved(Controller controller, int povCode, PovDirection value);
public boolean povMoved(Controller controller, int povCode, PovDirection value){
return false;
};
@Override
public abstract boolean xSliderMoved(Controller controller, int sliderCode, boolean value);
public boolean xSliderMoved(Controller controller, int sliderCode, boolean value){
return false;
};
@Override
public abstract boolean ySliderMoved(Controller controller, int sliderCode, boolean value);
public boolean ySliderMoved(Controller controller, int sliderCode, boolean value){
return false;
};
@Override
public abstract boolean accelerometerMoved(Controller controller, int accelerometerCode, Vector3 value);
public boolean accelerometerMoved(Controller controller, int accelerometerCode, Vector3 value){
return false;
};
}

View File

@@ -0,0 +1,94 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* 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 ve.ucv.ciens.ccg.nxtar.states;
import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
import com.badlogic.gdx.controllers.Controller;
public class CameraCalibrationState extends BaseState{
private float[][] calibrationSamples;
public CameraCalibrationState(){
calibrationSamples = new float[ProjectConstants.CALIBRATION_SAMPLES][];
for(int i = 0; i < calibrationSamples.length; i++){
calibrationSamples[i] = new float[ProjectConstants.CALIBRATION_PATTERN_POINTS * 2];
}
}
@Override
public void onStateSet(){
for(int i = 0; i < calibrationSamples.length; i++){
for(int j = 0; j < calibrationSamples[i].length; j++){
calibrationSamples[i][j] = 0.0f;
}
}
}
@Override
public void onStateUnset(){ }
@Override
public void render(float delta){ }
@Override
public void resize(int width, int height){ }
@Override
public void show(){ }
@Override
public void hide(){ }
@Override
public void pause(){ }
@Override
public void resume(){ }
@Override
public void dispose(){ }
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button){
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button){
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer){
return false;
}
@Override
public boolean buttonDown(Controller controller, int buttonCode){
return false;
}
@Override
public boolean buttonUp(Controller controller, int buttonCode){
return false;
}
@Override
public boolean axisMoved(Controller controller, int axisCode, float value){
return false;
}
}

View File

@@ -30,7 +30,6 @@ import ve.ucv.ciens.ccg.nxtar.utils.Size;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.PovDirection;
import com.badlogic.gdx.controllers.mappings.Ouya;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
@@ -815,54 +814,4 @@ public class InGameState extends BaseState{
public boolean axisMoved(Controller controller, int axisCode, float value){
return false;
}
@Override
public void connected(Controller controller){ }
@Override
public void disconnected(Controller controller){ }
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;
; UNUSED LISTENER METHODS ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
@Override
public boolean mouseMoved(int screenX, int screenY){
return false;
}
@Override
public boolean keyUp(int keycode){
return false;
}
@Override
public boolean keyTyped(char character){
return false;
}
@Override
public boolean povMoved(Controller controller, int povCode, PovDirection value){
return false;
}
@Override
public boolean xSliderMoved(Controller controller, int sliderCode, boolean value){
return false;
}
@Override
public boolean ySliderMoved(Controller controller, int sliderCode, boolean value){
return false;
}
@Override
public boolean accelerometerMoved(Controller controller, int accelerometerCode, Vector3 value){
return false;
}
@Override
public boolean scrolled(int amount){
return false;
}
}

View File

@@ -20,8 +20,6 @@ import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.PovDirection;
import com.badlogic.gdx.controllers.mappings.Ouya;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.OrthographicCamera;
@@ -42,7 +40,6 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
import com.badlogic.gdx.scenes.scene2d.utils.NinePatchDrawable;
public abstract class MainMenuStateBase extends BaseState{
protected static final String TAG = "MAIN_MENU";
private static final String CLASS_NAME = MainMenuStateBase.class.getSimpleName();
@@ -283,69 +280,4 @@ public abstract class MainMenuStateBase extends BaseState{
}
return false;
}
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; INPUT LISTENER METHOD STUBS ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
@Override
public boolean keyUp(int keycode){
return false;
}
@Override
public boolean keyTyped(char character){
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY){
return false;
}
@Override
public boolean scrolled(int amount){
return false;
}
@Override
public void connected(Controller controller){ }
@Override
public void disconnected(Controller controller){ }
@Override
public boolean buttonDown(Controller controller, int buttonCode){
return false;
}
@Override
public boolean buttonUp(Controller controller, int buttonCode){
return false;
}
@Override
public boolean axisMoved(Controller controller, int axisCode, float value){
return false;
}
@Override
public boolean povMoved(Controller controller, int povCode, PovDirection value){
return false;
}
@Override
public boolean xSliderMoved(Controller controller, int sliderCode, boolean value){
return false;
}
@Override
public boolean ySliderMoved(Controller controller, int sliderCode, boolean value){
return false;
}
@Override
public boolean accelerometerMoved(Controller controller, int accelerometerCode, Vector3 value){
return false;
}
}

View File

@@ -38,6 +38,7 @@ public abstract class ProjectConstants{
public static final String FONT_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
public static final int CALIBRATION_PATTERN_POINTS = 54;
public static final int CALIBRATION_SAMPLES = 10;
static{
OVERSCAN = Ouya.runningOnOuya ? 0.9f : 1.0f;