diff --git a/jme3-android/src/main/java/com/jme3/app/DefaultAndroidProfiler.java b/jme3-android/src/main/java/com/jme3/app/DefaultAndroidProfiler.java index 306887910d..1308b08ddc 100644 --- a/jme3-android/src/main/java/com/jme3/app/DefaultAndroidProfiler.java +++ b/jme3-android/src/main/java/com/jme3/app/DefaultAndroidProfiler.java @@ -135,6 +135,11 @@ public void appStep(AppStep appStep) { } } + @Override + public void appSubStep(String... additionalInfo) { + + } + public void vpStep(VpStep vpStep, ViewPort vp, RenderQueue.Bucket bucket) { if (androidApiLevel >= 18) { switch (vpStep) { diff --git a/jme3-core/src/main/java/com/jme3/app/BasicProfiler.java b/jme3-core/src/main/java/com/jme3/app/BasicProfiler.java index d652e4488f..6987ebc048 100644 --- a/jme3-core/src/main/java/com/jme3/app/BasicProfiler.java +++ b/jme3-core/src/main/java/com/jme3/app/BasicProfiler.java @@ -187,6 +187,10 @@ public void appStep( AppStep step ) { } } + @Override + public void appSubStep(String... additionalInfo) { + } + @Override public void vpStep( VpStep step, ViewPort vp, Bucket bucket ) { } diff --git a/jme3-core/src/main/java/com/jme3/app/DetailedProfiler.java b/jme3-core/src/main/java/com/jme3/app/DetailedProfiler.java index 403af46ad6..e5673df53c 100644 --- a/jme3-core/src/main/java/com/jme3/app/DetailedProfiler.java +++ b/jme3-core/src/main/java/com/jme3/app/DetailedProfiler.java @@ -87,6 +87,17 @@ public void appStep(AppStep step) { closeFrame(); } } + + + @Override + public void appSubStep(String... additionalInfo) { + if (data != null) { + String pathStep = getPath("", additionalInfo); + path.setLength(0); + path.append(curAppPath).append(pathStep); + addStep(path.toString(), System.nanoTime()); + } + } private void closeFrame() { //close frame diff --git a/jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java b/jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java index 177fcb22fb..2df1b71988 100644 --- a/jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java +++ b/jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java @@ -32,6 +32,7 @@ package com.jme3.app.state; import com.jme3.app.Application; +import com.jme3.profile.AppProfiler; import com.jme3.renderer.RenderManager; import com.jme3.util.SafeArrayList; import java.util.Arrays; @@ -284,6 +285,9 @@ public void update(float tpf){ AppState[] array = getStates(); for (AppState state : array){ if (state.isEnabled()) { + if (app.getAppProfiler() != null) { + app.getAppProfiler().appSubStep(state.getClass().getSimpleName()); + } state.update(tpf); } } diff --git a/jme3-core/src/main/java/com/jme3/profile/AppProfiler.java b/jme3-core/src/main/java/com/jme3/profile/AppProfiler.java index 4cfe0b92f9..480de08f43 100644 --- a/jme3-core/src/main/java/com/jme3/profile/AppProfiler.java +++ b/jme3-core/src/main/java/com/jme3/profile/AppProfiler.java @@ -51,6 +51,11 @@ public interface AppProfiler { */ public void appStep(AppStep step); + /** + * Called as a substep of the previous AppStep + */ + public void appSubStep(String... additionalInfo); + /** * Called at the beginning of the specified VpStep during * the rendering of the specified ViewPort. For bucket-specific diff --git a/jme3-examples/src/main/java/jme3test/stress/TestShaderNodesStress.java b/jme3-examples/src/main/java/jme3test/stress/TestShaderNodesStress.java index dc74d3c0db..b67c37a5fd 100644 --- a/jme3-examples/src/main/java/jme3test/stress/TestShaderNodesStress.java +++ b/jme3-examples/src/main/java/jme3test/stress/TestShaderNodesStress.java @@ -91,6 +91,11 @@ public void appStep(AppStep step) { } + @Override + public void appSubStep(String... additionalInfo) { + + } + @Override public void vpStep(VpStep step, ViewPort vp, RenderQueue.Bucket bucket) {