Hi
I tried to get shadows with a ShadowedRenderPass. But I only get shadows if I
pause the game (then a menu appears and the background is the normal game).
I really think that I miss or missunderstand something with these RenderPasses.
Here are important parts of my Main-Class:
public static void initNewGame() {
int respawn = gameCycle.getRespawnTime();
int countDown = gameCycle.getEndCountDown();
Game game = GameFactory.createNewGame(gameCycle.getNextScenario(), respawn, countDown);
cleanUp();
final MenuState menuState = new MenuState(null);
addNewGameState(menuState, false);
((MenuState)GameStateManager.getInstance().getChild("menu")).getMenu().getMainMenu().enableContinueButton(true);
final IngameState ingameState = new IngameState(game);
addNewGameState(ingameState, true);
ingameState.initIngameWindows();
final SpawnMenuState spawnMenuState = new SpawnMenuState();
addNewGameState(spawnMenuState, true);
}
private static void addNewGameState(final SimpleGameState state, final boolean setActive) {
GameStateManager.getInstance().attachChild(state);
state.setActive(setActive);
BasicGameStatePass gamePass = new BasicGameStatePass();
gamePass.setState(state);
passManagerState.getManager().add(gamePass);
}
private static void cleanUp() {
GameStateManager.getInstance().deactivateAllChildren();
GameStateManager.getInstance().detachAllChildren();
GameStateManager.getInstance().cleanup();
passManagerState = new PassManagerGameState();
passManagerState.setActive(true);
GameStateManager.getInstance().attachChild(passManagerState);
}
And here a method of my IngameState:
public void updateShadowSettings() {
String shadowStatus = GraphicSettings.getInstance().getShadowString();
if(shadowStatus.equals("Off")) {
shadowPass.setRenderShadows(false);
shadowPass.setEnabled(false);
if(Main.passManagerState.getManager().contains(shadowPass))
Main.passManagerState.getManager().remove(shadowPass);
} else {
if(!Main.passManagerState.getManager().contains(shadowPass))
Main.passManagerState.getManager().add(shadowPass);
shadowPass.setEnabled(true);
shadowPass.setRenderShadows(true);
if(shadowStatus.equals("High"))
shadowPass.setLightingMethod(ShadowedRenderPass.ADDITIVE);
else
shadowPass.setLightingMethod(ShadowedRenderPass.MODULATIVE);
}
}
The ShadowedPass is initialized in the Constructor of IngameState (Occluders are there added to
the ShadowedPass, too). And of course there is also a light that casts shadows.
What must I also do?