improved material handling

This commit is contained in:
Raybz@Raybz 2013-06-21 10:38:43 +02:00
parent 62122dcb7e
commit a056861e75
9 changed files with 33 additions and 20 deletions

View File

@ -44,7 +44,6 @@ public class GroundBorderGlowControl extends BaseControl {
public void setSpatial(Spatial spatial) { public void setSpatial(Spatial spatial) {
super.setSpatial(spatial); super.setSpatial(spatial);
this.material = ((Geometry) spatial).getMaterial(); this.material = ((Geometry) spatial).getMaterial();
this.material.setColor("GlowColor", ColorRGBA.Black);
} }
@Override @Override

View File

@ -46,7 +46,6 @@ public class GroundGlowControl extends BaseControl {
public void setSpatial(Spatial spatial) { public void setSpatial(Spatial spatial) {
super.setSpatial(spatial); super.setSpatial(spatial);
this.material = ((Geometry) spatial).getMaterial(); this.material = ((Geometry) spatial).getMaterial();
this.material.setColor("GlowColor", ColorRGBA.Black);
} }
@Override @Override

View File

@ -26,13 +26,13 @@ import org.wyrez.shootingstars.helper.UserDataKeys;
* @author Darth Affe * @author Darth Affe
*/ */
public class PlayerCamControl extends BaseControl { public class PlayerCamControl extends BaseControl {
private Camera camera; private Camera camera;
public PlayerCamControl(Camera camera) { public PlayerCamControl(Camera camera) {
this.camera = camera; this.camera = camera;
} }
@Override @Override
public void update(float tpf) { public void update(float tpf) {
if (spatial.getUserData(UserDataKeys.RUNNING)) { if (spatial.getUserData(UserDataKeys.RUNNING)) {
@ -40,7 +40,7 @@ public class PlayerCamControl extends BaseControl {
camera.setRotation(spatial.getLocalRotation()); camera.setRotation(spatial.getLocalRotation());
} }
} }
public Control cloneForSpatial(Spatial spatial) { public Control cloneForSpatial(Spatial spatial) {
PlayerCamControl control = new PlayerCamControl(camera); PlayerCamControl control = new PlayerCamControl(camera);
control.setSpatial(spatial); control.setSpatial(spatial);

View File

@ -86,7 +86,7 @@ public class PlayerShootControl extends BaseControl implements ActionListener {
} }
public void onAction(String name, boolean isPressed, float tpf) { public void onAction(String name, boolean isPressed, float tpf) {
if (name.equals(MAPPING_PLAYER_MOUSE_LEFT_CLICK)) { if (name.equals(MAPPING_PLAYER_MOUSE_LEFT_CLICK) && (Boolean) spatial.getUserData(UserDataKeys.RUNNING)) {
if (isPressed) { if (isPressed) {
setShooting(true); setShooting(true);
} else { } else {

View File

@ -18,6 +18,7 @@ package org.wyrez.shootingstars.factories;
import com.jme3.asset.AssetManager; import com.jme3.asset.AssetManager;
import com.jme3.material.Material; import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
/** /**
* *
@ -25,16 +26,21 @@ import com.jme3.material.Material;
*/ */
public enum Materials { public enum Materials {
UNSHADED("Common/MatDefs/Misc/Unshaded.j3md", null), UNSHADED("Common/MatDefs/Misc/Unshaded.j3md", null, null, null),
HEX("Common/MatDefs/Light/Lighting.j3md", "Textures/Hex.png"), HEX("Common/MatDefs/Light/Lighting.j3md", "Textures/Hex.png", null, null),
GLOW("Common/MatDefs/Light/Lighting.j3md", null); WEAPON("Common/MatDefs/Light/Lighting.j3md", null, ColorRGBA.White, ColorRGBA.Cyan),
GLOW("Common/MatDefs/Light/Lighting.j3md", null, ColorRGBA.White, ColorRGBA.Black);
private static AssetManager assetManager; private static AssetManager assetManager;
private String material; private String material;
private String texture; private String texture;
private ColorRGBA color;
private ColorRGBA glowColor;
Materials(String material, String texture) { Materials(String material, String texture, ColorRGBA color, ColorRGBA glowColor) {
this.material = material; this.material = material;
this.texture = texture; this.texture = texture;
this.color = color;
this.glowColor = glowColor;
} }
public Material create() { public Material create() {
@ -42,6 +48,12 @@ public enum Materials {
if (texture != null) { if (texture != null) {
mat.setTexture("DiffuseMap", assetManager.loadTexture(texture)); mat.setTexture("DiffuseMap", assetManager.loadTexture(texture));
} }
if (color != null) {
mat.setColor("Diffuse", color);
}
if (color != null) {
mat.setColor("GlowColor", glowColor);
}
return mat; return mat;
} }

View File

@ -46,7 +46,6 @@ public class GlowingHexPrism extends Node {
this.attachChild(prism); this.attachChild(prism);
Material glowMat = Materials.GLOW.create(); Material glowMat = Materials.GLOW.create();
glowMat.setColor("Diffuse", ColorRGBA.White);
glow = new Geometry("Prism " + position, new HexPrism(position.add( glow = new Geometry("Prism " + position, new HexPrism(position.add(
0f, height, 0f), size * glowPercentage, height * 0.001f)); 0f, height, 0f), size * glowPercentage, height * 0.001f));
glow.setMaterial(glowMat); glow.setMaterial(glowMat);

View File

@ -22,10 +22,9 @@ import com.jme3.math.FastMath;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry; import com.jme3.scene.Geometry;
import com.jme3.scene.Node; import com.jme3.scene.Node;
import org.wyrez.shootingstars.data.AudioDataManager;
import org.wyrez.shootingstars.controls.GroundBorderGlowControl; import org.wyrez.shootingstars.controls.GroundBorderGlowControl;
import org.wyrez.shootingstars.controls.GroundGlowControl;
import org.wyrez.shootingstars.controls.GroundMoveControl; import org.wyrez.shootingstars.controls.GroundMoveControl;
import org.wyrez.shootingstars.data.AudioDataManager;
import org.wyrez.shootingstars.factories.Materials; import org.wyrez.shootingstars.factories.Materials;
import org.wyrez.shootingstars.mesh.HexPrism; import org.wyrez.shootingstars.mesh.HexPrism;

View File

@ -36,6 +36,7 @@ import org.wyrez.shootingstars.controls.PlayerCamControl;
import org.wyrez.shootingstars.controls.PlayerMouseControl; import org.wyrez.shootingstars.controls.PlayerMouseControl;
import org.wyrez.shootingstars.controls.PlayerMoveControl; import org.wyrez.shootingstars.controls.PlayerMoveControl;
import org.wyrez.shootingstars.controls.PlayerShootControl; import org.wyrez.shootingstars.controls.PlayerShootControl;
import org.wyrez.shootingstars.controls.WeaponProjectileControl;
import org.wyrez.shootingstars.factories.Materials; import org.wyrez.shootingstars.factories.Materials;
import org.wyrez.shootingstars.game.Cinema; import org.wyrez.shootingstars.game.Cinema;
import org.wyrez.shootingstars.game.GameSettings; import org.wyrez.shootingstars.game.GameSettings;
@ -67,6 +68,7 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
private Cinema cinema; private Cinema cinema;
private Ground ground; private Ground ground;
private Spatial player; private Spatial player;
private Spatial weapon;
private boolean isRunning = false; private boolean isRunning = false;
public GameState(Node rootNode, Screen screen, StateManager stateManager, public GameState(Node rootNode, Screen screen, StateManager stateManager,
@ -112,10 +114,15 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
player = new Geometry("player", new Box(Vector3f.ZERO, 1f, 1f, 1f)); //TODO start location? player = new Geometry("player", new Box(Vector3f.ZERO, 1f, 1f, 1f)); //TODO start location?
player.setMaterial(Materials.UNSHADED.create()); player.setMaterial(Materials.UNSHADED.create());
player.setUserData(UserDataKeys.RUNNING, false); player.setUserData(UserDataKeys.RUNNING, false);
player.setUserData(UserDataKeys.SHOOTING, false);
player.addControl(new PlayerMouseControl(inputManager, camera)); player.addControl(new PlayerMouseControl(inputManager, camera));
player.addControl(new PlayerMoveControl(audioDataManager)); player.addControl(new PlayerMoveControl(audioDataManager));
player.addControl(new PlayerShootControl(inputManager, gui)); player.addControl(new PlayerShootControl(inputManager, gui));
player.addControl(new PlayerCamControl(camera)); player.addControl(new PlayerCamControl(camera));
weapon = new Geometry("weapon", new Box(0.01f, 0.01f, 2f));
weapon.addControl(new WeaponProjectileControl(rootNode, player));
weapon.setMaterial(Materials.WEAPON.create());
} }
private void setRunning(boolean running) { private void setRunning(boolean running) {
@ -135,6 +142,7 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
rootNode.attachChild(cinema); rootNode.attachChild(cinema);
rootNode.attachChild(ground); rootNode.attachChild(ground);
rootNode.attachChild(player); rootNode.attachChild(player);
rootNode.attachChild(weapon);
gui.setWait(); gui.setWait();
gui.attach(); gui.attach();
} }
@ -142,6 +150,7 @@ public class GameState extends AbstractAppState implements GameListener, ActionL
@Override @Override
public void stateDetached(AppStateManager stateManager) { public void stateDetached(AppStateManager stateManager) {
gui.detach(); gui.detach();
rootNode.detachChild(weapon);
rootNode.detachChild(player); rootNode.detachChild(player);
rootNode.detachChild(ground); rootNode.detachChild(ground);
rootNode.detachChild(cinema); rootNode.detachChild(cinema);

View File

@ -16,7 +16,6 @@
*/ */
package org.wyrez.shootingstars.states; package org.wyrez.shootingstars.states;
import com.jme3.app.Application;
import com.jme3.app.state.AbstractAppState; import com.jme3.app.state.AbstractAppState;
import com.jme3.app.state.AppStateManager; import com.jme3.app.state.AppStateManager;
import org.wyrez.shootingstars.ShootingStars; import org.wyrez.shootingstars.ShootingStars;
@ -47,8 +46,9 @@ public class MenuState extends AbstractAppState implements MenuListener {
public void exitGame() { public void exitGame() {
shootingStars.stop(); shootingStars.stop();
System.exit(0);
} }
public void openhighscore() { public void openhighscore() {
stateManager.setState(State.HIGHSCORE); stateManager.setState(State.HIGHSCORE);
} }
@ -66,8 +66,4 @@ public class MenuState extends AbstractAppState implements MenuListener {
public void stateDetached(AppStateManager stateManager) { public void stateDetached(AppStateManager stateManager) {
gui.detach(); gui.detach();
} }
@Override
public void update(float tpf) {
}
} }