Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,18 @@ public boolean hasState(AppState state){
* @return First attached state that is an instance of stateClass
*/
public <T extends AppState> T getState(Class<T> stateClass){
return getState(stateClass, false);
}

/**
* Returns the first state that is an instance of subclass of the specified class.
* @param <T>
* @param stateClass
* @param failOnMiss
* @return First attached state that is an instance of stateClass. If failOnMiss is true
* then an IllegalArgumentException is thrown if the state is not attached.
*/
public <T extends AppState> T getState(Class<T> stateClass, boolean failOnMiss){
synchronized (states){
AppState[] array = getStates();
for (AppState state : array) {
Expand All @@ -229,6 +241,10 @@ public <T extends AppState> T getState(Class<T> stateClass){
}
}
}

if(failOnMiss) {
throw new IllegalArgumentException("State not found for:" + stateClass);
}
return null;
}

Expand Down
6 changes: 5 additions & 1 deletion jme3-core/src/main/java/com/jme3/app/state/BaseAppState.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,11 @@ public final AppStateManager getStateManager() {
}

public final <T extends AppState> T getState( Class<T> type ) {
return getStateManager().getState(type);
return getState( type, false );
}

public final <T extends AppState> T getState( Class<T> type, boolean failOnMiss ) {
return getStateManager().getState( type, failOnMiss );
}

@Override
Expand Down