diff --git a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java index 015fd8c..76bd4c3 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java +++ b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java @@ -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); } } } diff --git a/src/ve/ucv/ciens/ccg/nxtar/interfaces/CVProcessor.java b/src/ve/ucv/ciens/ccg/nxtar/interfaces/CVProcessor.java index 64b55c9..39629e3 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/interfaces/CVProcessor.java +++ b/src/ve/ucv/ciens/ccg/nxtar/interfaces/CVProcessor.java @@ -23,4 +23,6 @@ public interface CVProcessor { } public CVData findMarkersInFrame(byte[] frame, int w, int h); + + public void calibrateCamera(); } diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/BaseState.java b/src/ve/ucv/ciens/ccg/nxtar/states/BaseState.java index 731bce3..adb99df 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/states/BaseState.java +++ b/src/ve/ucv/ciens/ccg/nxtar/states/BaseState.java @@ -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; + }; } diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/CameraCalibrationState.java b/src/ve/ucv/ciens/ccg/nxtar/states/CameraCalibrationState.java new file mode 100644 index 0000000..e20d0f8 --- /dev/null +++ b/src/ve/ucv/ciens/ccg/nxtar/states/CameraCalibrationState.java @@ -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; + } +} diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java index 17143b2..b7e7c03 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java +++ b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java @@ -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; - } } diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/MainMenuStateBase.java b/src/ve/ucv/ciens/ccg/nxtar/states/MainMenuStateBase.java index 13b5af2..93c5e99 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/states/MainMenuStateBase.java +++ b/src/ve/ucv/ciens/ccg/nxtar/states/MainMenuStateBase.java @@ -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; - } } diff --git a/src/ve/ucv/ciens/ccg/nxtar/utils/ProjectConstants.java b/src/ve/ucv/ciens/ccg/nxtar/utils/ProjectConstants.java index 03e69d8..4884fdb 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/utils/ProjectConstants.java +++ b/src/ve/ucv/ciens/ccg/nxtar/utils/ProjectConstants.java @@ -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;