Bomb game assets loaded with asset manager. Camera calibration is automagic.
This commit is contained in:
@@ -29,6 +29,7 @@ import ve.ucv.ciens.ccg.nxtar.states.MainMenuStateBase;
|
|||||||
import ve.ucv.ciens.ccg.nxtar.states.OuyaMainMenuState;
|
import ve.ucv.ciens.ccg.nxtar.states.OuyaMainMenuState;
|
||||||
import ve.ucv.ciens.ccg.nxtar.states.PauseState;
|
import ve.ucv.ciens.ccg.nxtar.states.PauseState;
|
||||||
import ve.ucv.ciens.ccg.nxtar.states.TabletMainMenuState;
|
import ve.ucv.ciens.ccg.nxtar.states.TabletMainMenuState;
|
||||||
|
import ve.ucv.ciens.ccg.nxtar.utils.GameSettings;
|
||||||
import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
|
import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
|
||||||
import aurelienribon.tweenengine.Tween;
|
import aurelienribon.tweenengine.Tween;
|
||||||
import aurelienribon.tweenengine.TweenEquations;
|
import aurelienribon.tweenengine.TweenEquations;
|
||||||
@@ -121,7 +122,7 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
/**
|
/**
|
||||||
* <p>Wrapper around the Operating System methods.</p>
|
* <p>Wrapper around the Operating System methods.</p>
|
||||||
*/
|
*/
|
||||||
private ActionResolver osFunction;
|
private ActionResolver actionResolver;
|
||||||
|
|
||||||
// Networking related fields.
|
// Networking related fields.
|
||||||
/**
|
/**
|
||||||
@@ -206,10 +207,10 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
|
|
||||||
// Check if the concrete application implements all required interfaces.
|
// Check if the concrete application implements all required interfaces.
|
||||||
try{
|
try{
|
||||||
this.osFunction = (ActionResolver)concreteApp;
|
this.actionResolver = (ActionResolver)concreteApp;
|
||||||
}catch(ClassCastException cc){
|
}catch(ClassCastException cc){
|
||||||
Gdx.app.debug(TAG, CLASS_NAME + ".Main() :: concreteApp does not implement the Toaster interface. Toasting disabled.");
|
Gdx.app.debug(TAG, CLASS_NAME + ".Main() :: concreteApp does not implement the Toaster interface. Toasting disabled.");
|
||||||
this.osFunction = null;
|
this.actionResolver = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
@@ -229,6 +230,8 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
* sets the application states.</p>
|
* sets the application states.</p>
|
||||||
*/
|
*/
|
||||||
public void create(){
|
public void create(){
|
||||||
|
GameSettings.initGameSettings(this);
|
||||||
|
|
||||||
// Create the state objects.
|
// Create the state objects.
|
||||||
states = new BaseState[game_states_t.getNumStates()];
|
states = new BaseState[game_states_t.getNumStates()];
|
||||||
if(Ouya.runningOnOuya)
|
if(Ouya.runningOnOuya)
|
||||||
@@ -268,7 +271,7 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start networking.
|
// Start networking.
|
||||||
osFunction.enableMulticast();
|
actionResolver.enableMulticast();
|
||||||
|
|
||||||
Gdx.app.debug(TAG, CLASS_NAME + ".create() :: Creating network threads");
|
Gdx.app.debug(TAG, CLASS_NAME + ".create() :: Creating network threads");
|
||||||
serviceDiscoveryThread = ServiceDiscoveryThread.getInstance();
|
serviceDiscoveryThread = ServiceDiscoveryThread.getInstance();
|
||||||
@@ -327,6 +330,10 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
public void render(){
|
public void render(){
|
||||||
super.render();
|
super.render();
|
||||||
|
|
||||||
|
// Load the assets.
|
||||||
|
if(!GameSettings.getEntityCreator().areEntitiesCreated())
|
||||||
|
GameSettings.getEntityCreator().updateAssetManager();
|
||||||
|
|
||||||
// If the current state set a value for nextState then switch to that state.
|
// If the current state set a value for nextState then switch to that state.
|
||||||
if(nextState != null){
|
if(nextState != null){
|
||||||
states[currState.getValue()].onStateUnset();
|
states[currState.getValue()].onStateUnset();
|
||||||
@@ -430,6 +437,9 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
font.dispose();
|
font.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(GameSettings.getEntityCreator() != null)
|
||||||
|
GameSettings.getEntityCreator().dispose();
|
||||||
|
|
||||||
// Dispose screens.
|
// Dispose screens.
|
||||||
for(int i = 0; i < states.length; i++){
|
for(int i = 0; i < states.length; i++){
|
||||||
states[i].dispose();
|
states[i].dispose();
|
||||||
@@ -440,29 +450,32 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
; APPLICATION EVENTS LISTENER INTERFACE METHODS ;
|
; APPLICATION EVENTS LISTENER INTERFACE METHODS ;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/
|
||||||
|
|
||||||
// TODO: Disable start game button until camera has been sucessfully calibrated.
|
|
||||||
// TODO: Add calibration listener callback.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>Callback used by the networking threads to notify sucessfull connections
|
|
||||||
* to the application</p>
|
|
||||||
*
|
|
||||||
* @param streamName The name of the thread notifying a connection.
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void networkStreamConnected(String streamName){
|
public synchronized void onNetworkStreamConnected(String streamName){
|
||||||
Gdx.app.log(TAG, CLASS_NAME + ".networkStreamConnected() :: Stream " + streamName + " connected.");
|
Gdx.app.log(TAG, CLASS_NAME + ".networkStreamConnected() :: Stream " + streamName + " connected.");
|
||||||
connections += 1;
|
connections += 1;
|
||||||
|
|
||||||
if(connections >= 3){
|
if(connections >= 3){
|
||||||
Gdx.app.debug(TAG, CLASS_NAME + ".networkStreamConnected() :: Stopping service broadcast.");
|
Gdx.app.debug(TAG, CLASS_NAME + ".networkStreamConnected() :: Stopping service broadcast.");
|
||||||
serviceDiscoveryThread.finish();
|
serviceDiscoveryThread.finish();
|
||||||
osFunction.disableMulticast();
|
if(actionResolver != null) actionResolver.disableMulticast();
|
||||||
osFunction.showShortToast("Client connected");
|
if(actionResolver != null) actionResolver.showShortToast("Client connected");
|
||||||
((MainMenuStateBase)states[game_states_t.MAIN_MENU.getValue()]).onClientConnected();
|
((MainMenuStateBase)states[game_states_t.MAIN_MENU.getValue()]).onClientConnected();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAssetsLoaded(){
|
||||||
|
if(actionResolver != null) actionResolver.showShortToast("All assets sucessfully loaded.");
|
||||||
|
((MainMenuStateBase)states[game_states_t.MAIN_MENU.getValue()]).onAssetsLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCameraCalibrated(){
|
||||||
|
if(actionResolver != null) actionResolver.showShortToast("Camera successfully calibrated.");
|
||||||
|
((MainMenuStateBase)states[game_states_t.MAIN_MENU.getValue()]).onCameraCalibrated();
|
||||||
|
}
|
||||||
|
|
||||||
/*;;;;;;;;;;;;;;;;;;
|
/*;;;;;;;;;;;;;;;;;;
|
||||||
; HELPER METHODS ;
|
; HELPER METHODS ;
|
||||||
;;;;;;;;;;;;;;;;;;*/
|
;;;;;;;;;;;;;;;;;;*/
|
||||||
@@ -474,9 +487,9 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
|
|||||||
* @param longToast True for a lasting toast. False for a short toast.
|
* @param longToast True for a lasting toast. False for a short toast.
|
||||||
*/
|
*/
|
||||||
public void toast(String msg, boolean longToast){
|
public void toast(String msg, boolean longToast){
|
||||||
if(osFunction != null){
|
if(actionResolver != null){
|
||||||
if(longToast) osFunction.showLongToast(msg);
|
if(longToast) actionResolver.showLongToast(msg);
|
||||||
else osFunction.showShortToast(msg);
|
else actionResolver.showShortToast(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import ve.ucv.ciens.ccg.nxtar.graphics.shaders.DirectionalLightPerPixelShader;
|
|||||||
|
|
||||||
import com.artemis.Entity;
|
import com.artemis.Entity;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.assets.AssetManager;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.g3d.Environment;
|
import com.badlogic.gdx.graphics.g3d.Environment;
|
||||||
import com.badlogic.gdx.graphics.g3d.Model;
|
import com.badlogic.gdx.graphics.g3d.Model;
|
||||||
@@ -36,11 +37,9 @@ import com.badlogic.gdx.graphics.g3d.ModelInstance;
|
|||||||
import com.badlogic.gdx.graphics.g3d.Shader;
|
import com.badlogic.gdx.graphics.g3d.Shader;
|
||||||
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
|
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
|
||||||
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
|
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;
|
||||||
import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader;
|
|
||||||
import com.badlogic.gdx.math.Matrix3;
|
import com.badlogic.gdx.math.Matrix3;
|
||||||
import com.badlogic.gdx.math.Vector3;
|
import com.badlogic.gdx.math.Vector3;
|
||||||
import com.badlogic.gdx.utils.GdxRuntimeException;
|
import com.badlogic.gdx.utils.GdxRuntimeException;
|
||||||
import com.badlogic.gdx.utils.UBJsonReader;
|
|
||||||
|
|
||||||
public class BombGameEntityCreator extends EntityCreatorBase{
|
public class BombGameEntityCreator extends EntityCreatorBase{
|
||||||
private static final String TAG = "BOMB_ENTITY_CREATOR";
|
private static final String TAG = "BOMB_ENTITY_CREATOR";
|
||||||
@@ -83,7 +82,7 @@ public class BombGameEntityCreator extends EntityCreatorBase{
|
|||||||
private Model wiresBombModelWire1 = null;
|
private Model wiresBombModelWire1 = null;
|
||||||
private Model wiresBombModelWire2 = null;
|
private Model wiresBombModelWire2 = null;
|
||||||
private Model wiresBombModelWire3 = null;
|
private Model wiresBombModelWire3 = null;
|
||||||
private Model easterEggModel = null;
|
// private Model easterEggModel = null;
|
||||||
|
|
||||||
// Collision models.
|
// Collision models.
|
||||||
private Model doorCollisionModel = null;
|
private Model doorCollisionModel = null;
|
||||||
@@ -99,11 +98,11 @@ public class BombGameEntityCreator extends EntityCreatorBase{
|
|||||||
private Model wiresBombCollisionModelWire1 = null;
|
private Model wiresBombCollisionModelWire1 = null;
|
||||||
private Model wiresBombCollisionModelWire2 = null;
|
private Model wiresBombCollisionModelWire2 = null;
|
||||||
private Model wiresBombCollisionModelWire3 = null;
|
private Model wiresBombCollisionModelWire3 = null;
|
||||||
private Model easterEggCollisionModel = null;
|
// private Model easterEggCollisionModel = null;
|
||||||
|
|
||||||
public BombGameEntityCreator(){
|
public BombGameEntityCreator(){
|
||||||
G3dModelLoader loader = new G3dModelLoader(new UBJsonReader());
|
|
||||||
currentBombId = 0;
|
currentBombId = 0;
|
||||||
|
manager = new AssetManager();
|
||||||
|
|
||||||
// Create and set the lighting.
|
// Create and set the lighting.
|
||||||
parameters = new EntityParameters();
|
parameters = new EntityParameters();
|
||||||
@@ -121,42 +120,42 @@ public class BombGameEntityCreator extends EntityCreatorBase{
|
|||||||
parameters.shader = shader;
|
parameters.shader = shader;
|
||||||
|
|
||||||
// Load the render models.
|
// Load the render models.
|
||||||
doorModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/door.g3db"));
|
manager.load("models/render_models/bomb_game/door.g3db", Model.class);
|
||||||
doorFrameModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/door_frame1.g3db"));
|
manager.load("models/render_models/bomb_game/door_frame1.g3db", Model.class);
|
||||||
|
|
||||||
combinationBombModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_3_body.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_3_body.g3db", Model.class);
|
||||||
combinationButton1Model = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_3_btn_1.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_3_btn_1.g3db", Model.class);
|
||||||
combinationButton2Model = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_3_btn_2.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_3_btn_2.g3db", Model.class);
|
||||||
combinationButton3Model = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_3_btn_3.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_3_btn_3.g3db", Model.class);
|
||||||
combinationButton4Model = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_3_btn_4.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_3_btn_4.g3db", Model.class);
|
||||||
|
|
||||||
inclinationBombModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_2_body.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_2_body.g3db", Model.class);
|
||||||
inclinationBombButtonModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/big_btn.g3db"));
|
manager.load("models/render_models/bomb_game/big_btn.g3db", Model.class);
|
||||||
|
|
||||||
wiresBombModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/bomb_1_body.g3db"));
|
manager.load("models/render_models/bomb_game/bomb_1_body.g3db", Model.class);
|
||||||
wiresBombModelWire1 = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/cable_1.g3db"));
|
manager.load("models/render_models/bomb_game/cable_1.g3db", Model.class);
|
||||||
wiresBombModelWire2 = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/cable_2.g3db"));
|
manager.load("models/render_models/bomb_game/cable_2.g3db", Model.class);
|
||||||
wiresBombModelWire3 = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/cable_3.g3db"));
|
manager.load("models/render_models/bomb_game/cable_3.g3db", Model.class);
|
||||||
// easterEggModel = loader.loadModel(Gdx.files.internal("models/render_models/bomb_game/"));
|
// manager.load("models/render_models/bomb_game/", Model.class);
|
||||||
|
|
||||||
// Load the collision models.
|
// Load the collision models.
|
||||||
doorCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/door_col.g3db"));
|
manager.load("models/collision_models/bomb_game/door_col.g3db", Model.class);
|
||||||
doorFrameCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/door_frame1_col.g3db"));
|
manager.load("models/collision_models/bomb_game/door_frame1_col.g3db", Model.class);
|
||||||
|
|
||||||
combinationBombCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_3_body_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_3_body_col.g3db", Model.class);
|
||||||
combinationButton1CollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_3_btn_1_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_3_btn_1_col.g3db", Model.class);
|
||||||
combinationButton2CollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_3_btn_2_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_3_btn_2_col.g3db", Model.class);
|
||||||
combinationButton3CollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_3_btn_3_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_3_btn_3_col.g3db", Model.class);
|
||||||
combinationButton4CollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_3_btn_4_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_3_btn_4_col.g3db", Model.class);
|
||||||
|
|
||||||
inclinationBombCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_2_body_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_2_body_col.g3db", Model.class);
|
||||||
inclinationBombButtonCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/big_btn_col.g3db"));
|
manager.load("models/collision_models/bomb_game/big_btn_col.g3db", Model.class);
|
||||||
|
|
||||||
wiresBombCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/bomb_1_body_col.g3db"));
|
manager.load("models/collision_models/bomb_game/bomb_1_body_col.g3db", Model.class);
|
||||||
wiresBombCollisionModelWire1 = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/cable_1_col.g3db"));
|
manager.load("models/collision_models/bomb_game/cable_1_col.g3db", Model.class);
|
||||||
wiresBombCollisionModelWire2 = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/cable_2_col.g3db"));
|
manager.load("models/collision_models/bomb_game/cable_2_col.g3db", Model.class);
|
||||||
wiresBombCollisionModelWire3 = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/cable_3_col.g3db"));
|
manager.load("models/collision_models/bomb_game/cable_3_col.g3db", Model.class);
|
||||||
// easterEggCollisionModel = loader.loadModel(Gdx.files.internal("models/collision_models/bomb_game/door.g3db"));
|
// manager.load("models/collision_models/bomb_game/door.g3db", Model.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -183,41 +182,14 @@ public class BombGameEntityCreator extends EntityCreatorBase{
|
|||||||
addDoor(parameters);
|
addDoor(parameters);
|
||||||
|
|
||||||
// TODO: Add easter egg.
|
// TODO: Add easter egg.
|
||||||
|
|
||||||
|
entitiesCreated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
if(shader != null) shader.dispose();
|
if(shader != null) shader.dispose();
|
||||||
|
manager.dispose();
|
||||||
// Dispose of the render models.
|
|
||||||
if(doorModel != null) doorModel.dispose();
|
|
||||||
if(doorFrameModel != null) doorFrameModel.dispose();
|
|
||||||
if(combinationBombModel != null) combinationBombModel.dispose();
|
|
||||||
if(combinationButton1Model != null) combinationButton1Model.dispose();
|
|
||||||
if(combinationButton2Model != null) combinationButton2Model.dispose();
|
|
||||||
if(combinationButton3Model != null) combinationButton3Model.dispose();
|
|
||||||
if(combinationButton4Model != null) combinationButton4Model.dispose();
|
|
||||||
if(inclinationBombModel != null) inclinationBombModel.dispose();
|
|
||||||
if(wiresBombModel != null) wiresBombModel.dispose();
|
|
||||||
if(wiresBombModelWire1 != null) wiresBombModelWire1.dispose();
|
|
||||||
if(wiresBombModelWire2 != null) wiresBombModelWire2.dispose();
|
|
||||||
if(wiresBombModelWire3 != null) wiresBombModelWire3.dispose();
|
|
||||||
if(easterEggModel != null) easterEggModel.dispose();
|
|
||||||
|
|
||||||
// Dispose of the collision models.
|
|
||||||
if(doorCollisionModel != null) doorCollisionModel.dispose();
|
|
||||||
if(doorFrameCollisionModel != null) doorFrameCollisionModel.dispose();
|
|
||||||
if(combinationBombCollisionModel != null) combinationBombCollisionModel.dispose();
|
|
||||||
if(combinationButton1CollisionModel != null) combinationButton1CollisionModel.dispose();
|
|
||||||
if(combinationButton2CollisionModel != null) combinationButton2CollisionModel.dispose();
|
|
||||||
if(combinationButton3CollisionModel != null) combinationButton3CollisionModel.dispose();
|
|
||||||
if(combinationButton4CollisionModel != null) combinationButton4CollisionModel.dispose();
|
|
||||||
if(inclinationBombCollisionModel != null) inclinationBombCollisionModel.dispose();
|
|
||||||
if(wiresBombCollisionModel != null) wiresBombCollisionModel.dispose();
|
|
||||||
if(wiresBombCollisionModelWire1 != null) wiresBombCollisionModelWire1.dispose();
|
|
||||||
if(wiresBombCollisionModelWire2 != null) wiresBombCollisionModelWire2.dispose();
|
|
||||||
if(wiresBombCollisionModelWire3 != null) wiresBombCollisionModelWire3.dispose();
|
|
||||||
if(easterEggCollisionModel != null) easterEggCollisionModel.dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addBomb(EntityParameters parameters, bomb_type_t type) throws IllegalArgumentException{
|
private void addBomb(EntityParameters parameters, bomb_type_t type) throws IllegalArgumentException{
|
||||||
@@ -371,4 +343,61 @@ public class BombGameEntityCreator extends EntityCreatorBase{
|
|||||||
}
|
}
|
||||||
thing.addToWorld();
|
thing.addToWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getModels(){
|
||||||
|
// Load the render models.
|
||||||
|
doorModel = manager.get("models/render_models/bomb_game/door.g3db", Model.class);
|
||||||
|
doorFrameModel = manager.get("models/render_models/bomb_game/door_frame1.g3db", Model.class);
|
||||||
|
|
||||||
|
combinationBombModel = manager.get("models/render_models/bomb_game/bomb_3_body.g3db", Model.class);
|
||||||
|
combinationButton1Model = manager.get("models/render_models/bomb_game/bomb_3_btn_1.g3db", Model.class);
|
||||||
|
combinationButton2Model = manager.get("models/render_models/bomb_game/bomb_3_btn_2.g3db", Model.class);
|
||||||
|
combinationButton3Model = manager.get("models/render_models/bomb_game/bomb_3_btn_3.g3db", Model.class);
|
||||||
|
combinationButton4Model = manager.get("models/render_models/bomb_game/bomb_3_btn_4.g3db", Model.class);
|
||||||
|
|
||||||
|
inclinationBombModel = manager.get("models/render_models/bomb_game/bomb_2_body.g3db", Model.class);
|
||||||
|
inclinationBombButtonModel = manager.get("models/render_models/bomb_game/big_btn.g3db", Model.class);
|
||||||
|
|
||||||
|
wiresBombModel = manager.get("models/render_models/bomb_game/bomb_1_body.g3db", Model.class);
|
||||||
|
wiresBombModelWire1 = manager.get("models/render_models/bomb_game/cable_1.g3db", Model.class);
|
||||||
|
wiresBombModelWire2 = manager.get("models/render_models/bomb_game/cable_2.g3db", Model.class);
|
||||||
|
wiresBombModelWire3 = manager.get("models/render_models/bomb_game/cable_3.g3db", Model.class);
|
||||||
|
// easterEggModel = manager.get("models/render_models/bomb_game/", Model.class);
|
||||||
|
|
||||||
|
// Load the collision models.
|
||||||
|
doorCollisionModel = manager.get("models/collision_models/bomb_game/door_col.g3db", Model.class);
|
||||||
|
doorFrameCollisionModel = manager.get("models/collision_models/bomb_game/door_frame1_col.g3db", Model.class);
|
||||||
|
|
||||||
|
combinationBombCollisionModel = manager.get("models/collision_models/bomb_game/bomb_3_body_col.g3db", Model.class);
|
||||||
|
combinationButton1CollisionModel = manager.get("models/collision_models/bomb_game/bomb_3_btn_1_col.g3db", Model.class);
|
||||||
|
combinationButton2CollisionModel = manager.get("models/collision_models/bomb_game/bomb_3_btn_2_col.g3db", Model.class);
|
||||||
|
combinationButton3CollisionModel = manager.get("models/collision_models/bomb_game/bomb_3_btn_3_col.g3db", Model.class);
|
||||||
|
combinationButton4CollisionModel = manager.get("models/collision_models/bomb_game/bomb_3_btn_4_col.g3db", Model.class);
|
||||||
|
|
||||||
|
inclinationBombCollisionModel = manager.get("models/collision_models/bomb_game/bomb_2_body_col.g3db", Model.class);
|
||||||
|
inclinationBombButtonCollisionModel = manager.get("models/collision_models/bomb_game/big_btn_col.g3db", Model.class);
|
||||||
|
|
||||||
|
wiresBombCollisionModel = manager.get("models/collision_models/bomb_game/bomb_1_body_col.g3db", Model.class);
|
||||||
|
wiresBombCollisionModelWire1 = manager.get("models/collision_models/bomb_game/cable_1_col.g3db", Model.class);
|
||||||
|
wiresBombCollisionModelWire2 = manager.get("models/collision_models/bomb_game/cable_2_col.g3db", Model.class);
|
||||||
|
wiresBombCollisionModelWire3 = manager.get("models/collision_models/bomb_game/cable_3_col.g3db", Model.class);
|
||||||
|
// easterEggCollisionModel = manager.get("models/collision_models/bomb_game/door.g3db", Model.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateAssetManager(){
|
||||||
|
boolean doneLoading;
|
||||||
|
|
||||||
|
if(core == null)
|
||||||
|
throw new NullPointerException("Core has not been set.");
|
||||||
|
|
||||||
|
doneLoading = manager.update();
|
||||||
|
if(doneLoading){
|
||||||
|
getModels();
|
||||||
|
createAllEntities();
|
||||||
|
core.onAssetsLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
return doneLoading;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,28 @@
|
|||||||
*/
|
*/
|
||||||
package ve.ucv.ciens.ccg.nxtar.entities;
|
package ve.ucv.ciens.ccg.nxtar.entities;
|
||||||
|
|
||||||
|
import ve.ucv.ciens.ccg.nxtar.NxtARCore;
|
||||||
|
import ve.ucv.ciens.ccg.nxtar.interfaces.ApplicationEventsListener;
|
||||||
|
|
||||||
import com.artemis.World;
|
import com.artemis.World;
|
||||||
|
import com.badlogic.gdx.assets.AssetManager;
|
||||||
import com.badlogic.gdx.utils.Disposable;
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
public abstract class EntityCreatorBase implements Disposable{
|
public abstract class EntityCreatorBase implements Disposable{
|
||||||
protected World world;
|
protected World world = null;
|
||||||
|
protected ApplicationEventsListener core = null;
|
||||||
|
protected boolean entitiesCreated = false;
|
||||||
|
protected AssetManager manager = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Sets the Artemis {@link World} to use to create entities.</p>
|
||||||
|
*
|
||||||
|
* @param world The Artemis {@link World}.
|
||||||
|
* @throws IllegalArgumentException if world is null.
|
||||||
|
*/
|
||||||
public void setWorld(World world) throws IllegalArgumentException{
|
public void setWorld(World world) throws IllegalArgumentException{
|
||||||
if(world == null)
|
if(world == null)
|
||||||
throw new IllegalArgumentException("World cannot be null.");
|
throw new IllegalArgumentException("World cannot be null.");
|
||||||
@@ -28,7 +44,38 @@ public abstract class EntityCreatorBase implements Disposable{
|
|||||||
this.world = world;
|
this.world = world;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void createAllEntities();
|
/**
|
||||||
|
* <p>Sets the application core to listen for asset loading events.</p>
|
||||||
|
*
|
||||||
|
* @param core The application core to be used as listener.
|
||||||
|
* @throws IllegalArgumentException if core is null.
|
||||||
|
*/
|
||||||
|
public void setCore(NxtARCore core) throws IllegalArgumentException{
|
||||||
|
if(core == null) throw new IllegalArgumentException("Core is null.");
|
||||||
|
this.core = core;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p> Updates the state of the {@link AssetManager}.</p>
|
||||||
|
*
|
||||||
|
* @return true if the {@link AssetManager} has finished loading.
|
||||||
|
*/
|
||||||
|
public abstract boolean updateAssetManager();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Unloads all assets loaded for the scenario.</p>
|
||||||
|
*/
|
||||||
public abstract void dispose();
|
public abstract void dispose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if the createAllEntities method has been called.
|
||||||
|
*/
|
||||||
|
public boolean areEntitiesCreated(){
|
||||||
|
return entitiesCreated;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Creates all entities for a game scenario.</p>
|
||||||
|
*/
|
||||||
|
protected abstract void createAllEntities();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class MarkerTestEntityCreator extends EntityCreatorBase {
|
|||||||
private DirectionalLightPerPixelShader ppShader;
|
private DirectionalLightPerPixelShader ppShader;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createAllEntities() {
|
protected void createAllEntities() {
|
||||||
ModelBuilder builder;
|
ModelBuilder builder;
|
||||||
Entity bomb, box, anim;
|
Entity bomb, box, anim;
|
||||||
G3dModelLoader loader;
|
G3dModelLoader loader;
|
||||||
@@ -108,6 +108,8 @@ public class MarkerTestEntityCreator extends EntityCreatorBase {
|
|||||||
bomb.addToWorld();
|
bomb.addToWorld();
|
||||||
anim.addToWorld();
|
anim.addToWorld();
|
||||||
box.addToWorld();
|
box.addToWorld();
|
||||||
|
|
||||||
|
entitiesCreated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -124,4 +126,12 @@ public class MarkerTestEntityCreator extends EntityCreatorBase {
|
|||||||
if(ppShader != null)
|
if(ppShader != null)
|
||||||
ppShader.dispose();
|
ppShader.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateAssetManager(){
|
||||||
|
createAllEntities();
|
||||||
|
if(core != null) core.onAssetsLoaded();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,5 +16,23 @@
|
|||||||
package ve.ucv.ciens.ccg.nxtar.interfaces;
|
package ve.ucv.ciens.ccg.nxtar.interfaces;
|
||||||
|
|
||||||
public interface ApplicationEventsListener {
|
public interface ApplicationEventsListener {
|
||||||
public void networkStreamConnected(String streamName);
|
/**
|
||||||
|
* <p>Callback used by the networking threads to notify sucessfull connections
|
||||||
|
* to the application</p>
|
||||||
|
*
|
||||||
|
* @param streamName The name of the thread notifying a connection.
|
||||||
|
*/
|
||||||
|
public void onNetworkStreamConnected(String streamName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Callback used by the assets loader to notify that all
|
||||||
|
* required game assets are ready to be used.</p>
|
||||||
|
*/
|
||||||
|
public void onAssetsLoaded();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Callback used by the camera calibration state to notify that the
|
||||||
|
* camera has been succesfully calibrated.</p>
|
||||||
|
*/
|
||||||
|
public void onCameraCalibrated();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class RobotControlThread extends Thread {
|
|||||||
try{
|
try{
|
||||||
client = server.accept();
|
client = server.accept();
|
||||||
client.setTcpNoDelay(true);
|
client.setTcpNoDelay(true);
|
||||||
if(netListener != null) netListener.networkStreamConnected(THREAD_NAME);
|
if(netListener != null) netListener.onNetworkStreamConnected(THREAD_NAME);
|
||||||
os = new ObjectOutputStream(client.getOutputStream());
|
os = new ObjectOutputStream(client.getOutputStream());
|
||||||
is = new ObjectInputStream(client.getInputStream());
|
is = new ObjectInputStream(client.getInputStream());
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class SensorReportThread extends Thread {
|
|||||||
try{
|
try{
|
||||||
client = server.accept();
|
client = server.accept();
|
||||||
client.setTcpNoDelay(true);
|
client.setTcpNoDelay(true);
|
||||||
if(netListener != null) netListener.networkStreamConnected(THREAD_NAME);
|
if(netListener != null) netListener.onNetworkStreamConnected(THREAD_NAME);
|
||||||
reader = client.getInputStream();
|
reader = client.getInputStream();
|
||||||
|
|
||||||
}catch(IOException io){
|
}catch(IOException io){
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ public class VideoStreamingThread extends Thread{
|
|||||||
//Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Receiving.");
|
//Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Receiving.");
|
||||||
if(netListener != null && !coreNotified && frameMonitor.getCurrentFrame() != null){
|
if(netListener != null && !coreNotified && frameMonitor.getCurrentFrame() != null){
|
||||||
coreNotified = true;
|
coreNotified = true;
|
||||||
netListener.networkStreamConnected(THREAD_NAME);
|
netListener.onNetworkStreamConnected(THREAD_NAME);
|
||||||
}
|
}
|
||||||
receiveUdp();
|
receiveUdp();
|
||||||
frames++;
|
frames++;
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ public class CameraCalibrationState extends BaseState{
|
|||||||
private VideoFrameMonitor frameMonitor;
|
private VideoFrameMonitor frameMonitor;
|
||||||
|
|
||||||
private float[][] calibrationSamples;
|
private float[][] calibrationSamples;
|
||||||
|
@SuppressWarnings("unused")
|
||||||
private boolean takeSample;
|
private boolean takeSample;
|
||||||
private int lastSampleTaken;
|
private int lastSampleTaken;
|
||||||
|
|
||||||
@@ -215,11 +216,6 @@ public class CameraCalibrationState extends BaseState{
|
|||||||
// Fetch the current video frame.
|
// Fetch the current video frame.
|
||||||
frame = frameMonitor.getCurrentFrame();
|
frame = frameMonitor.getCurrentFrame();
|
||||||
|
|
||||||
// Apply the undistortion method if the camera has been calibrated already.
|
|
||||||
/*if(core.cvProc.isCameraCalibrated()){
|
|
||||||
frame = core.cvProc.undistortFrame(frame);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Find the calibration points in the video frame.
|
// Find the calibration points in the video frame.
|
||||||
CalibrationData data = core.cvProc.findCalibrationPattern(frame);
|
CalibrationData data = core.cvProc.findCalibrationPattern(frame);
|
||||||
|
|
||||||
@@ -231,7 +227,7 @@ public class CameraCalibrationState extends BaseState{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the user requested a sample be taken.
|
// If the user requested a sample be taken.
|
||||||
if(takeSample && !core.cvProc.isCameraCalibrated() && data.calibrationPoints != null){
|
if(/*takeSample && */!core.cvProc.isCameraCalibrated() && data.calibrationPoints != null){
|
||||||
// Disable sample taking.
|
// Disable sample taking.
|
||||||
takeSample = false;
|
takeSample = false;
|
||||||
Gdx.app.log(TAG, CLASS_NAME + ".render(): Sample taken.");
|
Gdx.app.log(TAG, CLASS_NAME + ".render(): Sample taken.");
|
||||||
@@ -255,8 +251,8 @@ public class CameraCalibrationState extends BaseState{
|
|||||||
Gdx.app.log(TAG, CLASS_NAME + "render(): Last sample taken.");
|
Gdx.app.log(TAG, CLASS_NAME + "render(): Last sample taken.");
|
||||||
|
|
||||||
core.cvProc.calibrateCamera(calibrationSamples, frame);
|
core.cvProc.calibrateCamera(calibrationSamples, frame);
|
||||||
msg = "Camera successfully calibrated";
|
core.onCameraCalibrated();
|
||||||
core.toast(msg, true);
|
core.nextState = game_states_t.MAIN_MENU;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,14 +295,14 @@ public class CameraCalibrationState extends BaseState{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Render the user interface.
|
// Render the user interface.
|
||||||
if(!Ouya.runningOnOuya){
|
/*if(!Ouya.runningOnOuya){
|
||||||
core.batch.setProjectionMatrix(pixelPerfectCamera.combined);
|
core.batch.setProjectionMatrix(pixelPerfectCamera.combined);
|
||||||
core.batch.begin();{
|
core.batch.begin();{
|
||||||
takeSampleButton.draw(core.batch, 1.0f);
|
takeSampleButton.draw(core.batch, 1.0f);
|
||||||
}core.batch.end();
|
}core.batch.end();
|
||||||
}else{
|
}else{
|
||||||
// TODO: Render OUYA gui.
|
// TODO: Render OUYA gui.
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Save this frame as previous to avoid processing the same frame twice when network latency is high.
|
// Save this frame as previous to avoid processing the same frame twice when network latency is high.
|
||||||
prevFrame = frame;
|
prevFrame = frame;
|
||||||
|
|||||||
@@ -177,11 +177,7 @@ public class InGameState extends BaseState{
|
|||||||
frameBufferSprite = null;
|
frameBufferSprite = null;
|
||||||
|
|
||||||
// Set up the game world.
|
// Set up the game world.
|
||||||
gameWorld = new World();
|
gameWorld = GameSettings.getGameWorld();
|
||||||
|
|
||||||
GameSettings.initGameSettings();
|
|
||||||
GameSettings.entityCreator.setWorld(gameWorld);
|
|
||||||
GameSettings.entityCreator.createAllEntities();
|
|
||||||
|
|
||||||
gameWorld.setSystem(new MarkerPositioningSystem());
|
gameWorld.setSystem(new MarkerPositioningSystem());
|
||||||
gameWorld.setSystem(new ObjectPositioningSystem(), true);
|
gameWorld.setSystem(new ObjectPositioningSystem(), true);
|
||||||
@@ -362,9 +358,6 @@ public class InGameState extends BaseState{
|
|||||||
if(modelBatch != null)
|
if(modelBatch != null)
|
||||||
modelBatch.dispose();
|
modelBatch.dispose();
|
||||||
|
|
||||||
if(GameSettings.entityCreator != null)
|
|
||||||
GameSettings.entityCreator.dispose();
|
|
||||||
|
|
||||||
if(videoFrameTexture != null)
|
if(videoFrameTexture != null)
|
||||||
videoFrameTexture.dispose();
|
videoFrameTexture.dispose();
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ public abstract class MainMenuStateBase extends BaseState{
|
|||||||
|
|
||||||
// Helper fields.
|
// Helper fields.
|
||||||
protected boolean clientConnected;
|
protected boolean clientConnected;
|
||||||
|
protected boolean cameraCalibrated;
|
||||||
|
protected boolean assetsLoaded;
|
||||||
private float u_scaling[];
|
private float u_scaling[];
|
||||||
|
|
||||||
// Buttons and other gui components.
|
// Buttons and other gui components.
|
||||||
@@ -170,7 +172,6 @@ public abstract class MainMenuStateBase extends BaseState{
|
|||||||
u_scaling[0] = Gdx.graphics.getWidth() > Gdx.graphics.getHeight() ? 16.0f : 9.0f;
|
u_scaling[0] = Gdx.graphics.getWidth() > Gdx.graphics.getHeight() ? 16.0f : 9.0f;
|
||||||
u_scaling[1] = Gdx.graphics.getHeight() > Gdx.graphics.getWidth() ? 16.0f : 9.0f;
|
u_scaling[1] = Gdx.graphics.getHeight() > Gdx.graphics.getWidth() ? 16.0f : 9.0f;
|
||||||
|
|
||||||
|
|
||||||
win2world = new Vector3(0.0f, 0.0f, 0.0f);
|
win2world = new Vector3(0.0f, 0.0f, 0.0f);
|
||||||
touchPointWorldCoords = new Vector2();
|
touchPointWorldCoords = new Vector2();
|
||||||
startButtonTouched = false;
|
startButtonTouched = false;
|
||||||
@@ -179,6 +180,8 @@ public abstract class MainMenuStateBase extends BaseState{
|
|||||||
calibrationButtonTouchPointer = -1;
|
calibrationButtonTouchPointer = -1;
|
||||||
|
|
||||||
clientConnected = false;
|
clientConnected = false;
|
||||||
|
cameraCalibrated = false;
|
||||||
|
assetsLoaded = false;
|
||||||
stateActive = false;
|
stateActive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,10 +243,24 @@ public abstract class MainMenuStateBase extends BaseState{
|
|||||||
|
|
||||||
public void onClientConnected(){
|
public void onClientConnected(){
|
||||||
clientConnected = true;
|
clientConnected = true;
|
||||||
startButton.setDisabled(false);
|
|
||||||
calibrationButton.setDisabled(false);
|
calibrationButton.setDisabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onCameraCalibrated(){
|
||||||
|
cameraCalibrated = true;
|
||||||
|
calibrationButton.setDisabled(true);
|
||||||
|
startGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onAssetsLoaded(){
|
||||||
|
assetsLoaded = true;
|
||||||
|
startGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startGame(){
|
||||||
|
startButton.setDisabled(!(cameraCalibrated && assetsLoaded));
|
||||||
|
}
|
||||||
|
|
||||||
/*;;;;;;;;;;;;;;;;;;;;;;;;;;
|
/*;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; INPUT LISTENER METHODS ;
|
; INPUT LISTENER METHODS ;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;*/
|
;;;;;;;;;;;;;;;;;;;;;;;;;;*/
|
||||||
|
|||||||
@@ -15,17 +15,54 @@
|
|||||||
*/
|
*/
|
||||||
package ve.ucv.ciens.ccg.nxtar.utils;
|
package ve.ucv.ciens.ccg.nxtar.utils;
|
||||||
|
|
||||||
|
import com.artemis.World;
|
||||||
|
|
||||||
|
import ve.ucv.ciens.ccg.nxtar.NxtARCore;
|
||||||
import ve.ucv.ciens.ccg.nxtar.entities.BombGameEntityCreator;
|
import ve.ucv.ciens.ccg.nxtar.entities.BombGameEntityCreator;
|
||||||
import ve.ucv.ciens.ccg.nxtar.entities.EntityCreatorBase;
|
import ve.ucv.ciens.ccg.nxtar.entities.EntityCreatorBase;
|
||||||
import ve.ucv.ciens.ccg.nxtar.systems.GameLogicSystemBase;
|
import ve.ucv.ciens.ccg.nxtar.systems.GameLogicSystemBase;
|
||||||
|
|
||||||
public abstract class GameSettings{
|
public abstract class GameSettings{
|
||||||
public static EntityCreatorBase entityCreator = null;
|
private static EntityCreatorBase entityCreator = null;
|
||||||
public static GameLogicSystemBase gameLogicSystem = null;
|
private static GameLogicSystemBase gameLogicSystem = null;
|
||||||
|
private static World gameWorld = null;
|
||||||
|
|
||||||
public static void initGameSettings(){
|
public static void initGameSettings(NxtARCore core) throws IllegalArgumentException{
|
||||||
entityCreator = new BombGameEntityCreator();
|
if(core == null)
|
||||||
gameLogicSystem = null;
|
throw new IllegalArgumentException("Core is null.");
|
||||||
|
|
||||||
|
if(getGameWorld() == null)
|
||||||
|
gameWorld = new World();
|
||||||
|
|
||||||
|
if(getEntityCreator() == null){
|
||||||
|
entityCreator = new BombGameEntityCreator();
|
||||||
|
entityCreator.setWorld(GameSettings.getGameWorld());
|
||||||
|
entityCreator.setCore(core);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(getGameLogicSystem() == null)
|
||||||
|
gameLogicSystem = null;
|
||||||
//gameLogicSystem = new BombGameLogicSystem();
|
//gameLogicSystem = new BombGameLogicSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the entityCreator
|
||||||
|
*/
|
||||||
|
public static EntityCreatorBase getEntityCreator() {
|
||||||
|
return entityCreator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the gameLogicSystem
|
||||||
|
*/
|
||||||
|
public static GameLogicSystemBase getGameLogicSystem() {
|
||||||
|
return gameLogicSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the gameWorld
|
||||||
|
*/
|
||||||
|
public static World getGameWorld() {
|
||||||
|
return gameWorld;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user