Add subVolume and delay
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
|
||||
import com.jme3.audio.AudioNode;
|
||||
import com.jme3.system.NanoTimer;
|
||||
import pp.mdga.client.Board.Asset;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
import pp.mdga.client.MdgaState;
|
||||
|
||||
@@ -13,17 +11,12 @@ public class AcousticHandler {
|
||||
|
||||
private MdgaState state = MdgaState.NONE;
|
||||
|
||||
boolean playGame = false;
|
||||
private boolean playGame = false;
|
||||
private ArrayList<MusicAsset> gameTracks = new ArrayList<>();
|
||||
private Random random = new Random();
|
||||
private NanoTimer trackTimer = new NanoTimer();
|
||||
|
||||
private boolean fading = false;
|
||||
private boolean crossFading = false;
|
||||
private GameMusic scheduled = null;
|
||||
private GameMusic playing = null;
|
||||
private NanoTimer fadeTimer = new NanoTimer();
|
||||
private float fadeVolume = 1.0f;
|
||||
private final float FADE_DURATION = 3.0f;
|
||||
private final float CROSSFADE_DURATION = 1.5f;
|
||||
|
||||
@@ -31,24 +24,15 @@ public class AcousticHandler {
|
||||
private float musicVolume = 1.0f;
|
||||
private float soundVolume = 1.0f;
|
||||
|
||||
private GameMusic scheduled = null;
|
||||
private GameMusic playing = null;
|
||||
private ArrayList<GameSound> sounds = new ArrayList<>();
|
||||
|
||||
public AcousticHandler(MdgaApp app) {
|
||||
|
||||
this.app = app;
|
||||
}
|
||||
|
||||
public float getMainVolume() {
|
||||
return mainVolume;
|
||||
}
|
||||
|
||||
public float getMusicVolume() {
|
||||
return musicVolume;
|
||||
}
|
||||
|
||||
public float getSoundVolume() {
|
||||
return soundVolume;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
updateVolumeAndTrack();
|
||||
|
||||
@@ -59,29 +43,31 @@ public void update() {
|
||||
Iterator<GameSound> iterator = sounds.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
GameSound s = iterator.next();
|
||||
|
||||
s.update(getSoundVolumeTotal());
|
||||
|
||||
if (!s.isPlaying()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void playSound(Sound sound) {
|
||||
ArrayList<SoundAsset> assets = new ArrayList<SoundAsset>();
|
||||
public void playSound(MdgaSound sound) {
|
||||
ArrayList<SoundAssetDelayVolume> assets = new ArrayList<SoundAssetDelayVolume>();
|
||||
switch (sound) {
|
||||
case LOST:
|
||||
assets.add(SoundAsset.LOST);
|
||||
assets.add(new SoundAssetDelayVolume(SoundAsset.LOST, 1.0f, 0.0f));
|
||||
break;
|
||||
case VICTORY:
|
||||
assets.add(SoundAsset.VICTORY);
|
||||
assets.add(new SoundAssetDelayVolume(SoundAsset.VICTORY, 1.0f, 2.0f));
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
for (SoundAsset a : assets) {
|
||||
GameSound gameSound = new GameSound(app, a, getSoundVolume() * getMainVolume());
|
||||
gameSound.play();
|
||||
for (SoundAssetDelayVolume sawd : assets) {
|
||||
GameSound gameSound = new GameSound(app, sawd.asset(), getSoundVolumeTotal(), sawd.subVolume(), sawd.delay());
|
||||
sounds.add(gameSound);
|
||||
}
|
||||
}
|
||||
@@ -105,6 +91,7 @@ public void playState(MdgaState state) {
|
||||
case GAME:
|
||||
addGameTracks();
|
||||
playGame = true;
|
||||
assert(gameTracks.size() > 0) : "no more game music available";
|
||||
asset = gameTracks.remove(0);
|
||||
break;
|
||||
case CEREMONY:
|
||||
@@ -115,7 +102,7 @@ public void playState(MdgaState state) {
|
||||
|
||||
assert(null != asset) : "music sceduling went wrong";
|
||||
|
||||
scheduled = new GameMusic(app, asset, getMusicVolume() * getMainVolume(), asset.getLoop());
|
||||
scheduled = new GameMusic(app, asset, getMusicVolumeTotal(), asset.getSubVolume(), asset.getLoop());
|
||||
}
|
||||
|
||||
private float lerp(float start, float end, float t) {
|
||||
@@ -126,7 +113,6 @@ private void updateVolumeAndTrack() {
|
||||
if (playing == null && scheduled != null && !fading) {
|
||||
playing = scheduled;
|
||||
scheduled = null;
|
||||
fadeVolume = 1.0f;
|
||||
playing.play();
|
||||
return;
|
||||
}
|
||||
@@ -143,7 +129,7 @@ private void updateVolumeAndTrack() {
|
||||
float t = Math.min(time / FADE_DURATION, 1.0f);
|
||||
float oldVolume = lerp(1.0f, 0.0f, t);
|
||||
if (playing != null) {
|
||||
playing.update(getMusicVolume() * getMainVolume() * oldVolume);
|
||||
playing.update(getMusicVolumeTotal()* oldVolume);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +140,7 @@ private void updateVolumeAndTrack() {
|
||||
if (!scheduled.isPlaying()) {
|
||||
scheduled.play();
|
||||
}
|
||||
scheduled.update(getMusicVolume() * getMainVolume() * newVolume);
|
||||
scheduled.update(getMusicVolumeTotal() * newVolume);
|
||||
}
|
||||
|
||||
if (time > FADE_DURATION + CROSSFADE_DURATION) {
|
||||
@@ -164,15 +150,16 @@ private void updateVolumeAndTrack() {
|
||||
playing = scheduled;
|
||||
scheduled = null;
|
||||
|
||||
fadeVolume = 1.0f;
|
||||
fading = false;
|
||||
}
|
||||
} else if (playing != null) {
|
||||
playing.update(getMusicVolume() * getMainVolume());
|
||||
playing.update(getMusicVolumeTotal());
|
||||
}
|
||||
}
|
||||
|
||||
private void addGameTracks() {
|
||||
Random random = new Random();
|
||||
|
||||
for (int i = 1; i <= 6; i++) {
|
||||
gameTracks.add(MusicAsset.valueOf("GAME_" + i));
|
||||
}
|
||||
@@ -189,7 +176,30 @@ private void updateGameTracks() {
|
||||
|
||||
MusicAsset nextTrack = gameTracks.remove(0);
|
||||
|
||||
scheduled = new GameMusic(app, nextTrack, getMusicVolume() * getMainVolume(), nextTrack.getLoop());
|
||||
scheduled = new GameMusic(app, nextTrack, getMusicVolumeTotal(), nextTrack.getSubVolume(), nextTrack.getLoop());
|
||||
}
|
||||
}
|
||||
|
||||
public float getMainVolume() {
|
||||
|
||||
return mainVolume;
|
||||
}
|
||||
|
||||
public float getMusicVolume() {
|
||||
|
||||
return musicVolume;
|
||||
}
|
||||
|
||||
public float getSoundVolume() {
|
||||
return soundVolume;
|
||||
}
|
||||
|
||||
public float getMusicVolumeTotal() {
|
||||
|
||||
return getMusicVolume() * getMainVolume();
|
||||
}
|
||||
|
||||
public float getSoundVolumeTotal() {
|
||||
return getSoundVolume() * getMainVolume();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,17 +5,20 @@
|
||||
import com.jme3.audio.AudioSource;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
|
||||
public class GameMusic {
|
||||
private final MdgaApp app;
|
||||
|
||||
class GameMusic {
|
||||
private float volume;
|
||||
private AudioNode music;
|
||||
private final float subVolume;
|
||||
|
||||
GameMusic(MdgaApp app, MusicAsset asset, float volume, boolean loop) {
|
||||
this.app = app;
|
||||
private final AudioNode music;
|
||||
|
||||
GameMusic(MdgaApp app, MusicAsset asset, float volume, float subVolume, boolean loop) {
|
||||
this.volume = volume;
|
||||
this.subVolume = subVolume;
|
||||
|
||||
loadMusic(asset.getPath());
|
||||
music = new AudioNode(app.getAssetManager(), asset.getPath(), AudioData.DataType.Stream);
|
||||
music.setPositional(false);
|
||||
music.setDirectional(false);
|
||||
music.setVolume(volume * subVolume);
|
||||
|
||||
music.setLooping(loop);
|
||||
}
|
||||
@@ -36,15 +39,8 @@ void pause() {
|
||||
music.stop();
|
||||
}
|
||||
|
||||
void reset() {
|
||||
if(null == music) {
|
||||
return;
|
||||
}
|
||||
|
||||
music.setTimeOffset(0);
|
||||
}
|
||||
|
||||
boolean isPlaying() {
|
||||
|
||||
return music.getStatus() == AudioSource.Status.Playing;
|
||||
}
|
||||
|
||||
@@ -68,14 +64,7 @@ boolean nearEnd(float thresholdSeconds) {
|
||||
void update(float newVolume) {
|
||||
if(volume != newVolume) {
|
||||
volume = newVolume;
|
||||
music.setVolume(volume);
|
||||
music.setVolume(volume * subVolume);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadMusic(String path) {
|
||||
music = new AudioNode(app.getAssetManager(), path, AudioData.DataType.Stream);
|
||||
music.setVolume(volume);
|
||||
music.setPositional(false);
|
||||
music.setDirectional(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,37 +3,56 @@
|
||||
import com.jme3.audio.AudioData;
|
||||
import com.jme3.audio.AudioNode;
|
||||
import com.jme3.audio.AudioSource;
|
||||
import com.jme3.system.NanoTimer;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
|
||||
public class GameSound {
|
||||
|
||||
private final MdgaApp app;
|
||||
|
||||
class GameSound {
|
||||
private float volume;
|
||||
private SoundAsset asset;
|
||||
final private float subVolume;
|
||||
|
||||
private AudioNode sound;
|
||||
private final AudioNode sound;
|
||||
|
||||
GameSound(MdgaApp app, SoundAsset asset, float volume) {
|
||||
this.app = app;
|
||||
private boolean playing = false;
|
||||
private boolean finished = false;
|
||||
|
||||
private float delay = 0.0f;
|
||||
private NanoTimer timer = null;
|
||||
|
||||
GameSound(MdgaApp app, SoundAsset asset, float volume, float subVolume, float delay) {
|
||||
this.volume = volume;
|
||||
this.subVolume = subVolume;
|
||||
this.delay = delay;
|
||||
|
||||
loadMusic(asset.getPath());
|
||||
}
|
||||
|
||||
void play() {
|
||||
sound.play();
|
||||
}
|
||||
|
||||
boolean isPlaying() {
|
||||
return sound != null && sound.getStatus() == AudioSource.Status.Playing;
|
||||
}
|
||||
|
||||
private void loadMusic(String path) {
|
||||
sound = new AudioNode(app.getAssetManager(), path, AudioData.DataType.Buffer);
|
||||
sound.setVolume(volume);
|
||||
sound = new AudioNode(app.getAssetManager(), asset.getPath(), AudioData.DataType.Buffer);
|
||||
sound.setPositional(false);
|
||||
sound.setDirectional(false);
|
||||
sound.setLooping(false);
|
||||
sound.setVolume(volume * subVolume);
|
||||
|
||||
timer = new NanoTimer();
|
||||
}
|
||||
|
||||
boolean isPlaying() {
|
||||
return !finished;
|
||||
}
|
||||
|
||||
void update(float newVolume) {
|
||||
if(!playing && timer.getTimeInSeconds() > delay) {
|
||||
sound.play();
|
||||
playing = true;
|
||||
}
|
||||
|
||||
if(!playing) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(volume != newVolume) {
|
||||
volume = newVolume;
|
||||
sound.setVolume(volume * subVolume);
|
||||
}
|
||||
|
||||
if(sound != null && sound.getStatus() == AudioSource.Status.Playing) {
|
||||
finished = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
|
||||
public enum Sound {
|
||||
public enum MdgaSound {
|
||||
DICE_ROLL,
|
||||
TURN_START,
|
||||
TURN_END,
|
||||
@@ -1,32 +1,41 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
|
||||
enum MusicAsset {
|
||||
MAIN_MENU("Spaceship.wav"),
|
||||
LOBBY("DeadPlanet.wav"),
|
||||
CEREMONY("80s,Disco,Life.wav"),
|
||||
GAME_1("NeonRoadTrip.wav", false),
|
||||
GAME_2("NoPressureTrance.wav", false),
|
||||
GAME_3("TheSynthRave.wav", false),
|
||||
GAME_4("LaserParty.wav", false),
|
||||
GAME_5("RetroNoir.wav", false),
|
||||
GAME_6("SpaceInvaders.wav", false);
|
||||
MAIN_MENU("Spaceship.wav", 1.0f),
|
||||
LOBBY("DeadPlanet.wav", 1.0f),
|
||||
CEREMONY("80s,Disco,Life.wav", 1.0f),
|
||||
GAME_1("NeonRoadTrip.wav", false, 1.0f),
|
||||
GAME_2("NoPressureTrance.wav", false, 1.0f),
|
||||
GAME_3("TheSynthRave.wav", false, 1.0f),
|
||||
GAME_4("LaserParty.wav", false, 1.0f),
|
||||
GAME_5("RetroNoir.wav", false, 1.0f),
|
||||
GAME_6("SpaceInvaders.wav", false, 1.0f);
|
||||
|
||||
private final String path;
|
||||
private final boolean loop;
|
||||
private final float subVolume;
|
||||
|
||||
MusicAsset(String name) {
|
||||
MusicAsset(String name, float subVolume) {
|
||||
this.path = "music/" + name;
|
||||
this.loop = false;
|
||||
this.subVolume = subVolume;
|
||||
}
|
||||
|
||||
MusicAsset(String name, boolean loop) {
|
||||
MusicAsset(String name, boolean loop, float subVolume) {
|
||||
this.path = "music/" + name;
|
||||
this.loop = loop;
|
||||
this.subVolume = subVolume;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public boolean getLoop() { return loop; }
|
||||
public boolean getLoop() {
|
||||
return loop;
|
||||
}
|
||||
|
||||
public float getSubVolume() {
|
||||
return subVolume;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
|
||||
record SoundAssetDelayVolume(SoundAsset asset, float subVolume, float delay) {
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.client.Board;
|
||||
|
||||
public class BoardCamera {
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package pp.mdga.client.Board;
|
||||
|
||||
import com.jme3.light.AmbientLight;
|
||||
import com.jme3.light.DirectionalLight;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.queue.RenderQueue;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.shadow.DirectionalLightShadowRenderer;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -14,7 +18,7 @@ public class BoardView {
|
||||
private static final float GRID_ELEVATION = 0.0f;
|
||||
private static final String MAP_NAME = "circle_map.mdga";
|
||||
|
||||
private final MdgaApp mdgaApp;
|
||||
private final MdgaApp app;
|
||||
|
||||
private PileControl drawPile = new PileControl();
|
||||
private PileControl discardPile = new PileControl();
|
||||
@@ -22,23 +26,45 @@ public class BoardView {
|
||||
private ArrayList<NodeControl> infield = new ArrayList<NodeControl>(40);
|
||||
private ArrayList<PieceControl> pieces;
|
||||
|
||||
public BoardView(MdgaApp mdgaApp) {
|
||||
assert(mdgaApp != null) : "app is null";
|
||||
public BoardView(MdgaApp app) {
|
||||
assert(app != null) : "app is null";
|
||||
|
||||
this.mdgaApp = mdgaApp;
|
||||
this.app = app;
|
||||
|
||||
pieces = new ArrayList<PieceControl>(4 * 4);
|
||||
|
||||
initMap();
|
||||
initCamera();
|
||||
}
|
||||
|
||||
private void initCamera() {
|
||||
app.getFlyByCamera().setEnabled(true);
|
||||
int zoom = 20;
|
||||
app.getCamera().setLocation(new Vector3f(zoom,0,zoom));
|
||||
app.getCamera().lookAt(new Vector3f(0,0,0), new Vector3f(0,0,1));
|
||||
|
||||
DirectionalLight sun = new DirectionalLight();
|
||||
sun.setColor(ColorRGBA.White);
|
||||
sun.setDirection(new Vector3f(-1,0,-1));
|
||||
app.getRootNode().addLight(sun);
|
||||
|
||||
AmbientLight ambient = new AmbientLight();
|
||||
ambient.setColor(new ColorRGBA(0.3f,0.3f,0.3f,1));
|
||||
app.getRootNode().addLight(ambient);
|
||||
|
||||
final int SHADOWMAP_SIZE= 1024 * 8;
|
||||
DirectionalLightShadowRenderer dlsr = new DirectionalLightShadowRenderer(app.getAssetManager(), SHADOWMAP_SIZE, 4);
|
||||
dlsr.setLight(sun);
|
||||
app.getViewPort().addProcessor(dlsr);
|
||||
}
|
||||
|
||||
private void initMap() {
|
||||
List<AssetOnMap> assetOnMaps = new MapLoader().loadMap(MAP_NAME);
|
||||
List<AssetOnMap> assetsOnMap = MapLoader.loadMap(MAP_NAME);
|
||||
|
||||
for (AssetOnMap assetOnMap : assetOnMaps){
|
||||
int x = assetOnMap.x();
|
||||
int y = assetOnMap.y();
|
||||
Spatial model = createModel(assetOnMap.asset());
|
||||
for (AssetOnMap aom : assetsOnMap){
|
||||
int x = aom.x();
|
||||
int y = aom.y();
|
||||
Spatial model = createModel(aom.asset());
|
||||
model.setLocalTranslation(gridToWorld(x,y));
|
||||
}
|
||||
}
|
||||
@@ -46,14 +72,14 @@ private void initMap() {
|
||||
private Spatial createModel(Asset asset){
|
||||
String modelName = asset.getModelPath();
|
||||
String texName = asset.getDiffPath();
|
||||
Spatial model = mdgaApp.getAssetManager().loadModel(modelName);
|
||||
Spatial model = app.getAssetManager().loadModel(modelName);
|
||||
model.scale(asset.getSize());
|
||||
model.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(90));
|
||||
model.setShadowMode(RenderQueue.ShadowMode.CastAndReceive);
|
||||
Material mat = new Material(mdgaApp.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
|
||||
mat.setTexture("DiffuseMap", mdgaApp.getAssetManager().loadTexture(texName));
|
||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
|
||||
mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture(texName));
|
||||
model.setMaterial(mat);
|
||||
mdgaApp.getRootNode().attachChild(model);
|
||||
app.getRootNode().attachChild(model);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,13 +8,10 @@
|
||||
import java.util.List;
|
||||
|
||||
public class MapLoader {
|
||||
public MapLoader(){
|
||||
|
||||
}
|
||||
public List<AssetOnMap> loadMap(String mapName) {
|
||||
static public List<AssetOnMap> loadMap(String mapName) {
|
||||
List<AssetOnMap> assetsOnMap = new ArrayList<>();
|
||||
|
||||
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(mapName);
|
||||
try (InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(mapName);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
|
||||
|
||||
while (true) {
|
||||
@@ -40,16 +37,14 @@ public List<AssetOnMap> loadMap(String mapName) {
|
||||
Asset asset = getLoadedAsset(assetName);
|
||||
assetsOnMap.add(new AssetOnMap(asset, x, y));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return assetsOnMap;
|
||||
}
|
||||
|
||||
private Asset getLoadedAsset(String assetName) {
|
||||
static private Asset getLoadedAsset(String assetName) {
|
||||
return switch(assetName){
|
||||
case "node" -> Asset.node_normal;
|
||||
case "node_start" -> Asset.node_start;
|
||||
@@ -59,7 +54,14 @@ private Asset getLoadedAsset(String assetName) {
|
||||
case "node_home_black" -> Asset.node_home_black;
|
||||
case "node_home_green" -> Asset.node_home_green;
|
||||
case "world" -> Asset.world;
|
||||
default -> throw new IllegalStateException("Unexpected value: " + assetName);
|
||||
case "tent_big" -> Asset.bigTent;
|
||||
case "tent_small" -> Asset.smallTent;
|
||||
case "stack" -> Asset.cardStack;
|
||||
case "jet" -> Asset.jet;
|
||||
case "radar" -> Asset.radar;
|
||||
case "ship" -> Asset.ship;
|
||||
case "tank" -> Asset.tank;
|
||||
default -> throw new IllegalStateException("Unexpected asset in .mdga file: " + assetName);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,25 +3,12 @@
|
||||
import com.jme3.app.SimpleApplication;
|
||||
import com.jme3.system.NanoTimer;
|
||||
import pp.mdga.client.Acoustic.AcousticHandler;
|
||||
import pp.mdga.client.Acoustic.Sound;
|
||||
import pp.mdga.client.Acoustic.MdgaSound;
|
||||
import pp.mdga.client.Animation.AnimationHandler;
|
||||
import com.jme3.light.AmbientLight;
|
||||
import com.jme3.light.DirectionalLight;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.queue.RenderQueue;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.shadow.DirectionalLightShadowRenderer;
|
||||
import com.jme3.system.AppSettings;
|
||||
import pp.mdga.client.Board.Asset;
|
||||
import pp.mdga.client.Board.AssetOnMap;
|
||||
import pp.mdga.client.Board.BoardView;
|
||||
import pp.mdga.client.Board.MapLoader;
|
||||
import pp.mdga.client.Dialog.DialogView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MdgaApp extends SimpleApplication {
|
||||
private AnimationHandler animationHandler;
|
||||
private AcousticHandler acousticHandler;
|
||||
@@ -54,27 +41,8 @@ public void simpleInitApp() {
|
||||
//dialogView.mainMenu();
|
||||
//acousticHandler.playState(MdgaState.GAME);
|
||||
|
||||
acousticHandler.playSound(Sound.LOST);
|
||||
acousticHandler.playSound(Sound.VICTORY);
|
||||
|
||||
flyCam.setEnabled(true);
|
||||
int zoom = 20;
|
||||
cam.setLocation(new Vector3f(zoom,0,zoom));
|
||||
cam.lookAt(new Vector3f(0,0,0), new Vector3f(0,0,1));
|
||||
|
||||
DirectionalLight sun = new DirectionalLight();
|
||||
sun.setColor(ColorRGBA.White);
|
||||
sun.setDirection(new Vector3f(-1,0,-1));
|
||||
rootNode.addLight(sun);
|
||||
|
||||
AmbientLight ambient = new AmbientLight();
|
||||
ambient.setColor(new ColorRGBA(0.3f,0.3f,0.3f,1));
|
||||
rootNode.addLight(ambient);
|
||||
|
||||
final int SHADOWMAP_SIZE= 1024 * 8;
|
||||
DirectionalLightShadowRenderer dlsr = new DirectionalLightShadowRenderer(assetManager, SHADOWMAP_SIZE, 4);
|
||||
dlsr.setLight(sun);
|
||||
viewPort.addProcessor(dlsr);
|
||||
acousticHandler.playSound(MdgaSound.LOST);
|
||||
acousticHandler.playSound(MdgaSound.VICTORY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user