From aa5871b49af74f37062e6ecad9f749d0b5bb33e4 Mon Sep 17 00:00:00 2001
From: Miguel Angel Astor Romero
Date: Fri, 6 Jun 2014 19:10:11 -0430
Subject: [PATCH] Started modelling user input.
---
src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java | 2 +-
.../nxtar/entities/BombGameEntityCreator.java | 116 ++++++++++--------
.../ccg/nxtar/factories/UserInputFactory.java | 35 ++++++
.../factories/products/GamepadUserInput.java | 30 +++++
.../factories/products/KeyboardUserInput.java | 34 +++++
.../factories/products/TouchUserInput.java | 26 ++++
.../nxtar/factories/products/UserInput.java | 23 ++++
.../ciens/ccg/nxtar/states/InGameState.java | 28 +++--
.../nxtar/systems/ObjectRenderingSystem.java | 52 +-------
...em.java => RobotArmPositioningSystem.java} | 29 ++++-
10 files changed, 261 insertions(+), 114 deletions(-)
create mode 100644 src/ve/ucv/ciens/ccg/nxtar/factories/UserInputFactory.java
create mode 100644 src/ve/ucv/ciens/ccg/nxtar/factories/products/GamepadUserInput.java
create mode 100644 src/ve/ucv/ciens/ccg/nxtar/factories/products/KeyboardUserInput.java
create mode 100644 src/ve/ucv/ciens/ccg/nxtar/factories/products/TouchUserInput.java
create mode 100644 src/ve/ucv/ciens/ccg/nxtar/factories/products/UserInput.java
rename src/ve/ucv/ciens/ccg/nxtar/systems/{ObjectPositioningSystem.java => RobotArmPositioningSystem.java} (61%)
diff --git a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java
index 3b7296d..50cb1ec 100644
--- a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java
+++ b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java
@@ -86,7 +86,7 @@ public class NxtARCore extends Game implements ApplicationEventsListener{
}
public static int getNumStates(){
- return 4;
+ return 3;
}
};
diff --git a/src/ve/ucv/ciens/ccg/nxtar/entities/BombGameEntityCreator.java b/src/ve/ucv/ciens/ccg/nxtar/entities/BombGameEntityCreator.java
index 81c42fe..f1ec915 100644
--- a/src/ve/ucv/ciens/ccg/nxtar/entities/BombGameEntityCreator.java
+++ b/src/ve/ucv/ciens/ccg/nxtar/entities/BombGameEntityCreator.java
@@ -64,62 +64,49 @@ public class BombGameEntityCreator extends EntityCreatorBase{
}
}
- private EntityParameters parameters;
- private Shader shader;
- private int currentBombId;
+ private Shader shader;
+ private int currentBombId;
// Render models.
- private Model doorModel = null;
- private Model doorFrameModel = null;
- private Model combinationBombModel = null;
- private Model combinationButton1Model = null;
- private Model combinationButton2Model = null;
- private Model combinationButton3Model = null;
- private Model combinationButton4Model = null;
- private Model inclinationBombModel = null;
- private Model inclinationBombButtonModel = null;
- private Model wiresBombModel = null;
- private Model wiresBombModelWire1 = null;
- private Model wiresBombModelWire2 = null;
- private Model wiresBombModelWire3 = null;
- // private Model easterEggModel = null;
+ private Model robotArmModel = null;
+ private Model doorModel = null;
+ private Model doorFrameModel = null;
+ private Model combinationBombModel = null;
+ private Model combinationButton1Model = null;
+ private Model combinationButton2Model = null;
+ private Model combinationButton3Model = null;
+ private Model combinationButton4Model = null;
+ private Model inclinationBombModel = null;
+ private Model inclinationBombButtonModel = null;
+ private Model wiresBombModel = null;
+ private Model wiresBombModelWire1 = null;
+ private Model wiresBombModelWire2 = null;
+ private Model wiresBombModelWire3 = null;
+ private Model easterEggModel = null;
// Collision models.
- private Model doorCollisionModel = null;
- private Model doorFrameCollisionModel = null;
- private Model combinationBombCollisionModel = null;
- private Model combinationButton1CollisionModel = null;
- private Model combinationButton2CollisionModel = null;
- private Model combinationButton3CollisionModel = null;
- private Model combinationButton4CollisionModel = null;
- private Model inclinationBombCollisionModel = null;
- private Model inclinationBombButtonCollisionModel = null;
- private Model wiresBombCollisionModel = null;
- private Model wiresBombCollisionModelWire1 = null;
- private Model wiresBombCollisionModelWire2 = null;
- private Model wiresBombCollisionModelWire3 = null;
- // private Model easterEggCollisionModel = null;
+ private Model robotArmCollisionModel = null;
+ private Model doorCollisionModel = null;
+ private Model doorFrameCollisionModel = null;
+ private Model combinationBombCollisionModel = null;
+ private Model combinationButton1CollisionModel = null;
+ private Model combinationButton2CollisionModel = null;
+ private Model combinationButton3CollisionModel = null;
+ private Model combinationButton4CollisionModel = null;
+ private Model inclinationBombCollisionModel = null;
+ private Model inclinationBombButtonCollisionModel = null;
+ private Model wiresBombCollisionModel = null;
+ private Model wiresBombCollisionModelWire1 = null;
+ private Model wiresBombCollisionModelWire2 = null;
+ private Model wiresBombCollisionModelWire3 = null;
+ private Model easterEggCollisionModel = null;
public BombGameEntityCreator(){
currentBombId = 0;
manager = new AssetManager();
- // Create and set the lighting.
- parameters = new EntityParameters();
- parameters.environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.3f, 0.3f, 0.3f, 1.0f));
- parameters.environment.add(new DirectionalLight().set(new Color(1, 1, 1, 1), new Vector3(0, 0, -1)));
-
- // Load the shader.
- shader = new DirectionalLightPerPixelShader();
- try{
- shader.init();
- }catch(GdxRuntimeException gdx){
- Gdx.app.error(TAG, CLASS_NAME + ".BombGameEntityCreator(): Shader failed to load: " + gdx.getMessage());
- shader = null;
- }
- parameters.shader = shader;
-
// Load the render models.
+ manager.load("models/render_models/bomb_game/robot_arm.g3db", Model.class);
manager.load("models/render_models/bomb_game/door.g3db", Model.class);
manager.load("models/render_models/bomb_game/door_frame1.g3db", Model.class);
@@ -139,6 +126,7 @@ public class BombGameEntityCreator extends EntityCreatorBase{
// manager.load("models/render_models/bomb_game/", Model.class);
// Load the collision models.
+ manager.load("models/collision_models/bomb_game/robot_arm_col.g3db", Model.class);
manager.load("models/collision_models/bomb_game/door_col.g3db", Model.class);
manager.load("models/collision_models/bomb_game/door_frame1_col.g3db", Model.class);
@@ -160,7 +148,24 @@ public class BombGameEntityCreator extends EntityCreatorBase{
@Override
public void createAllEntities(){
- // TODO: Add the robot arms.
+ EntityParameters parameters;
+
+ // Create and set the lighting.
+ parameters = new EntityParameters();
+ parameters.environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.3f, 0.3f, 0.3f, 1.0f));
+ parameters.environment.add(new DirectionalLight().set(new Color(1, 1, 1, 1), new Vector3(0, 0, -1)));
+
+ // Load the shader.
+ shader = new DirectionalLightPerPixelShader();
+ try{
+ shader.init();
+ }catch(GdxRuntimeException gdx){
+ Gdx.app.error(TAG, CLASS_NAME + ".BombGameEntityCreator(): Shader failed to load: " + gdx.getMessage());
+ shader = null;
+ }
+ parameters.shader = shader;
+
+ addRobotArm(parameters);
// Add bombs.
parameters.markerCode = 89;
@@ -209,6 +214,17 @@ public class BombGameEntityCreator extends EntityCreatorBase{
manager.dispose();
}
+ private void addRobotArm(EntityParameters parameters){
+ Entity robotArm = world.createEntity();
+
+ robotArm.addComponent(new GeometryComponent(new Vector3(), new Matrix3(), new Vector3(1, 1, 1)));
+ robotArm.addComponent(new EnvironmentComponent(parameters.environment));
+ robotArm.addComponent(new ShaderComponent(parameters.shader));
+ robotArm.addComponent(new RenderModelComponent(robotArmModel));
+ robotArm.addComponent(new CollisionModelComponent(robotArmCollisionModel));
+ robotArm.addToWorld();
+ }
+
private void addBomb(EntityParameters parameters, bomb_type_t type) throws IllegalArgumentException{
Entity bomb;
BombComponent bombComponent = new BombComponent(currentBombId, type);
@@ -362,7 +378,8 @@ public class BombGameEntityCreator extends EntityCreatorBase{
}
private void getModels(){
- // Load the render models.
+ // Get the render models.
+ robotArmModel = manager.get("models/render_models/bomb_game/robot_arm.g3db", Model.class);
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);
@@ -381,7 +398,8 @@ public class BombGameEntityCreator extends EntityCreatorBase{
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.
+ // Get the collision models.
+ robotArmCollisionModel = manager.get("models/collision_models/bomb_game/robot_arm_col.g3db", Model.class);
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);
diff --git a/src/ve/ucv/ciens/ccg/nxtar/factories/UserInputFactory.java b/src/ve/ucv/ciens/ccg/nxtar/factories/UserInputFactory.java
new file mode 100644
index 0000000..26eee80
--- /dev/null
+++ b/src/ve/ucv/ciens/ccg/nxtar/factories/UserInputFactory.java
@@ -0,0 +1,35 @@
+/*
+ * 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.factories;
+
+import ve.ucv.ciens.ccg.nxtar.factories.products.GamepadUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.KeyboardUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.TouchUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.UserInput;
+
+public abstract class UserInputFactory{
+ public static UserInput createTouchUserInput(){
+ return new TouchUserInput();
+ }
+
+ public static UserInput createGamepadUserInput(){
+ return new GamepadUserInput();
+ }
+
+ public static UserInput createKeyboardUserInput(){
+ return new KeyboardUserInput();
+ }
+}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/factories/products/GamepadUserInput.java b/src/ve/ucv/ciens/ccg/nxtar/factories/products/GamepadUserInput.java
new file mode 100644
index 0000000..f39a496
--- /dev/null
+++ b/src/ve/ucv/ciens/ccg/nxtar/factories/products/GamepadUserInput.java
@@ -0,0 +1,30 @@
+/*
+ * 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.factories.products;
+
+public class GamepadUserInput extends UserInput {
+ public float axisLeftX;
+ public float axisLeftY;
+ public float axisRightX;
+ public float axisRightY;
+
+ public GamepadUserInput(){
+ this.axisLeftX = 0.0f;
+ this.axisLeftY = 0.0f;
+ this.axisRightX = 0.0f;
+ this.axisRightY = 0.0f;
+ }
+}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/factories/products/KeyboardUserInput.java b/src/ve/ucv/ciens/ccg/nxtar/factories/products/KeyboardUserInput.java
new file mode 100644
index 0000000..813c6fb
--- /dev/null
+++ b/src/ve/ucv/ciens/ccg/nxtar/factories/products/KeyboardUserInput.java
@@ -0,0 +1,34 @@
+/*
+ * 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.factories.products;
+
+public class KeyboardUserInput extends UserInput {
+ public boolean keyLeft;
+ public boolean keyRight;
+ public boolean keyUp;
+ public boolean keyDown;
+ public boolean keyA;
+ public boolean keyZ;
+
+ public KeyboardUserInput(){
+ this.keyLeft = false;
+ this.keyRight = false;
+ this.keyUp = false;
+ this.keyDown = false;
+ this.keyA = false;
+ this.keyZ = false;
+ }
+}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/factories/products/TouchUserInput.java b/src/ve/ucv/ciens/ccg/nxtar/factories/products/TouchUserInput.java
new file mode 100644
index 0000000..4a4ab2d
--- /dev/null
+++ b/src/ve/ucv/ciens/ccg/nxtar/factories/products/TouchUserInput.java
@@ -0,0 +1,26 @@
+/*
+ * 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.factories.products;
+
+import com.badlogic.gdx.math.collision.Ray;
+
+public class TouchUserInput extends UserInput {
+ public Ray movementRay;
+
+ public TouchUserInput(){
+ movementRay = null;
+ }
+}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/factories/products/UserInput.java b/src/ve/ucv/ciens/ccg/nxtar/factories/products/UserInput.java
new file mode 100644
index 0000000..8213aa8
--- /dev/null
+++ b/src/ve/ucv/ciens/ccg/nxtar/factories/products/UserInput.java
@@ -0,0 +1,23 @@
+/*
+ * 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.factories.products;
+
+import ve.ucv.ciens.ccg.nxtar.factories.UserInputFactory;
+
+/**
+ * Tag class for the {@link UserInputFactory} products.
+ */
+public abstract class UserInput{}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java
index f993a9b..8d00f7c 100644
--- a/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java
+++ b/src/ve/ucv/ciens/ccg/nxtar/states/InGameState.java
@@ -19,6 +19,8 @@ import ve.ucv.ciens.ccg.networkdata.MotorEvent;
import ve.ucv.ciens.ccg.networkdata.MotorEvent.motor_t;
import ve.ucv.ciens.ccg.nxtar.NxtARCore;
import ve.ucv.ciens.ccg.nxtar.NxtARCore.game_states_t;
+import ve.ucv.ciens.ccg.nxtar.factories.UserInputFactory;
+import ve.ucv.ciens.ccg.nxtar.factories.products.UserInput;
import ve.ucv.ciens.ccg.nxtar.graphics.CustomPerspectiveCamera;
import ve.ucv.ciens.ccg.nxtar.interfaces.ImageProcessor.MarkerData;
import ve.ucv.ciens.ccg.nxtar.network.monitors.MotorEventQueue;
@@ -27,8 +29,8 @@ import ve.ucv.ciens.ccg.nxtar.systems.AnimationSystem;
import ve.ucv.ciens.ccg.nxtar.systems.GeometrySystem;
import ve.ucv.ciens.ccg.nxtar.systems.MarkerPositioningSystem;
import ve.ucv.ciens.ccg.nxtar.systems.MarkerRenderingSystem;
-import ve.ucv.ciens.ccg.nxtar.systems.ObjectPositioningSystem;
import ve.ucv.ciens.ccg.nxtar.systems.ObjectRenderingSystem;
+import ve.ucv.ciens.ccg.nxtar.systems.RobotArmPositioningSystem;
import ve.ucv.ciens.ccg.nxtar.utils.GameSettings;
import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
@@ -74,6 +76,7 @@ public class InGameState extends BaseState{
private World gameWorld;
private MarkerRenderingSystem markerRenderingSystem;
private ObjectRenderingSystem objectRenderingSystem;
+ private RobotArmPositioningSystem robotArmPositioningSystem;
// Cameras.
private OrthographicCamera unitaryOrthoCamera;
@@ -179,8 +182,9 @@ public class InGameState extends BaseState{
// Set up the game world.
gameWorld = GameSettings.getGameWorld();
+ robotArmPositioningSystem = new RobotArmPositioningSystem();
gameWorld.setSystem(new MarkerPositioningSystem());
- gameWorld.setSystem(new ObjectPositioningSystem(), true);
+ gameWorld.setSystem(robotArmPositioningSystem, true);
gameWorld.setSystem(new GeometrySystem());
gameWorld.setSystem(new AnimationSystem());
// TODO: Make and add object-marker collision detection system.
@@ -442,6 +446,7 @@ public class InGameState extends BaseState{
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button){
MotorEvent event;
+ UserInput input;
if(!Ouya.runningOnOuya){
win2world.set(screenX, screenY, 0.0f);
@@ -529,8 +534,14 @@ public class InGameState extends BaseState{
event.setPower((byte)0x00);
queue.addEvent(event);
}
+
}else{
- // TODO: Send input to the input handler system.
+ input = UserInputFactory.createTouchUserInput();
+
+ // TODO: Calculate movement ray.
+
+ robotArmPositioningSystem.setUserInput(input);
+ robotArmPositioningSystem.process();
}
return true;
@@ -640,8 +651,6 @@ public class InGameState extends BaseState{
motorButtonsPointers[6] = -1;
motorButtonsTouched[6] = false;
- }else{
- // TODO: Pass input to the input handler system.
}
return true;
@@ -748,8 +757,6 @@ public class InGameState extends BaseState{
motorButtonsPointers[6] = -1;
motorButtonsTouched[6] = false;
- }else{
- // TODO: Pass input to the input handler system.
}
return true;
@@ -846,8 +853,9 @@ public class InGameState extends BaseState{
event.setMotor(motor_t.RECENTER);
event.setPower((byte)0x00);
queue.addEvent(event);
- }else{
- // TODO: Pass input to the input handler system.
+
+ }else if(buttonCode == Ouya.BUTTON_A){
+ core.nextState = game_states_t.MAIN_MENU;
}
return true;
@@ -923,8 +931,6 @@ public class InGameState extends BaseState{
}else if(buttonCode == Ouya.BUTTON_Y){
motorGamepadButtonPressed[6] = false;
- }else{
- // TODO: Pass input to the input handler system.
}
return true;
diff --git a/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectRenderingSystem.java b/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectRenderingSystem.java
index 793db24..bdf9654 100644
--- a/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectRenderingSystem.java
+++ b/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectRenderingSystem.java
@@ -16,11 +16,9 @@
package ve.ucv.ciens.ccg.nxtar.systems;
import ve.ucv.ciens.ccg.nxtar.components.EnvironmentComponent;
-import ve.ucv.ciens.ccg.nxtar.components.GeometryComponent;
import ve.ucv.ciens.ccg.nxtar.components.MarkerCodeComponent;
import ve.ucv.ciens.ccg.nxtar.components.RenderModelComponent;
import ve.ucv.ciens.ccg.nxtar.components.ShaderComponent;
-import ve.ucv.ciens.ccg.nxtar.components.VisibilityComponent;
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
@@ -35,40 +33,19 @@ import com.badlogic.gdx.graphics.g3d.ModelBatch;
* entities to be rendered must have a geometry, shader and mesh component associated.
*/
public class ObjectRenderingSystem extends EntityProcessingSystem {
-// @Mapper ComponentMapper geometryMapper;
@Mapper ComponentMapper shaderMapper;
@Mapper ComponentMapper modelMapper;
@Mapper ComponentMapper environmentMapper;
- @Mapper ComponentMapper visibiltyMapper;
-
-// /**
-// * A matrix representing 3D translations.
-// */
-// private Matrix4 translationMatrix;
-//
-// /**
-// * A matrix representing 3D rotations.
-// */
-// private Matrix4 rotationMatrix;
-//
-// /**
-// * A matrix representing 3D scalings.
-// */
-// private Matrix4 scalingMatrix;
private PerspectiveCamera camera;
-
private ModelBatch batch;
@SuppressWarnings("unchecked")
public ObjectRenderingSystem(ModelBatch batch) {
- super(Aspect.getAspectForAll(GeometryComponent.class, ShaderComponent.class, RenderModelComponent.class, EnvironmentComponent.class, VisibilityComponent.class).exclude(MarkerCodeComponent.class));
+ super(Aspect.getAspectForAll(ShaderComponent.class, RenderModelComponent.class, EnvironmentComponent.class).exclude(MarkerCodeComponent.class));
- camera = null;
- this.batch = batch;
-// translationMatrix = new Matrix4().setToTranslation(0.0f, 0.0f, 0.0f);
-// rotationMatrix = new Matrix4().idt();
-// scalingMatrix = new Matrix4().setToScaling(0.0f, 0.0f, 0.0f);
+ camera = null;
+ this.batch = batch;
}
public void begin(PerspectiveCamera camera) throws RuntimeException{
@@ -84,37 +61,18 @@ public class ObjectRenderingSystem extends EntityProcessingSystem {
camera = null;
}
- /**
- * Renders the entity passed by parameter, calculating it's corresponding geometric
- * transformation and setting and calling it's associated shader program.
- *
- * @param e The entity to be processed.
- */
@Override
protected void process(Entity e) {
EnvironmentComponent environment;
-// GeometryComponent geometryComponent;
ShaderComponent shaderComponent;
RenderModelComponent renderModelComponent;
- VisibilityComponent visibility;
// Get the necessary components.
-// geometryComponent = geometryMapper.get(e);
renderModelComponent = modelMapper.get(e);
shaderComponent = shaderMapper.get(e);
environment = environmentMapper.get(e);
- visibility = visibiltyMapper.get(e);
- if(visibility.visible){
- // Calculate the geometric transformation for this entity.
-// translationMatrix.setToTranslation(geometryComponent.position);
-// rotationMatrix.set(geometryComponent.rotation);
-// scalingMatrix.setToScaling(geometryComponent.scaling);
-// renderModelComponent.instance.transform.idt().mul(translationMatrix).mul(rotationMatrix).mul(scalingMatrix);
-// renderModelComponent.instance.calculateTransforms();
-
- // Render this entity.
- batch.render(renderModelComponent.instance, environment.environment, shaderComponent.shader);
- }
+ // Render this entity.
+ batch.render(renderModelComponent.instance, environment.environment, shaderComponent.shader);
}
}
diff --git a/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectPositioningSystem.java b/src/ve/ucv/ciens/ccg/nxtar/systems/RobotArmPositioningSystem.java
similarity index 61%
rename from src/ve/ucv/ciens/ccg/nxtar/systems/ObjectPositioningSystem.java
rename to src/ve/ucv/ciens/ccg/nxtar/systems/RobotArmPositioningSystem.java
index 624cbce..0278434 100644
--- a/src/ve/ucv/ciens/ccg/nxtar/systems/ObjectPositioningSystem.java
+++ b/src/ve/ucv/ciens/ccg/nxtar/systems/RobotArmPositioningSystem.java
@@ -16,6 +16,10 @@
package ve.ucv.ciens.ccg.nxtar.systems;
import ve.ucv.ciens.ccg.nxtar.components.GeometryComponent;
+import ve.ucv.ciens.ccg.nxtar.factories.products.GamepadUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.KeyboardUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.TouchUserInput;
+import ve.ucv.ciens.ccg.nxtar.factories.products.UserInput;
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
@@ -23,22 +27,35 @@ import com.artemis.Entity;
import com.artemis.annotations.Mapper;
import com.artemis.systems.EntityProcessingSystem;
-public class ObjectPositioningSystem extends EntityProcessingSystem {
+public class RobotArmPositioningSystem extends EntityProcessingSystem {
@Mapper ComponentMapper geometryMapper;
+ private UserInput input;
+
@SuppressWarnings("unchecked")
- public ObjectPositioningSystem(){
+ public RobotArmPositioningSystem(){
super(Aspect.getAspectForAll(GeometryComponent.class));
}
- public void setUserInput(){
- // TODO: Desing a representation for user input.
- // TODO: Store user input for processing.
+ public void setUserInput(UserInput input){
+ this.input = input;
}
@Override
protected void process(Entity e) {
GeometryComponent geometry = geometryMapper.get(e);
- // TODO: Set the geometry fields based on user input.
+
+ if(input == null) return;
+
+ if(input instanceof TouchUserInput){
+
+ }else if(input instanceof GamepadUserInput){
+
+ }else if(input instanceof KeyboardUserInput){
+
+ }else
+ throw new ClassCastException("Input is not a valid UserInput instance.");
+
+ input = null;
}
}