Started programming the calibration state.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -23,4 +23,6 @@ public interface CVProcessor {
|
||||
}
|
||||
|
||||
public CVData findMarkersInFrame(byte[] frame, int w, int h);
|
||||
|
||||
public void calibrateCamera();
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user