From 7363b7d5cc620d947954eca89e4f1f62f201f3cc Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 5 May 2018 12:36:34 +0200 Subject: [PATCH] Fixed bug with android 8.0 and opengl --- .../assets/debug/levelpacks/Grasslands.xml | 14 +- .../debug/shader/entityVertexShader.glsl | 13 +- .../manifests/full/debug/AndroidManifest.xml | 1 + app/src/main/assets/levelpacks/Grasslands.xml | 14 +- .../main/assets/levelpacks/Icy Mountains.xml | 187 ++++++++++++++++++ .../assets/shader/entityVertexShader.glsl | 13 +- .../frajul/endlessroll/entities/Entity.java | 8 + .../endlessroll/entities/tools/ToolType.java | 2 +- .../de/frajul/endlessroll/main/game/Game.java | 2 +- .../main/game/TestScreenScene.java | 13 +- .../rendering/renderer/GameRenderer.java | 6 +- .../endlessroll/views/ToolButtonBar.java | 2 +- .../particlelab/rendering/GameRenderer.java | 1 + 13 files changed, 239 insertions(+), 37 deletions(-) diff --git a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml index 81b050f..2a271d1 100644 --- a/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml +++ b/app/build/intermediates/assets/debug/levelpacks/Grasslands.xml @@ -456,10 +456,10 @@ - + - + @@ -468,22 +468,22 @@ - + - + - + - + @@ -498,7 +498,7 @@ - + diff --git a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl index b96c4d4..5f7af0d 100644 --- a/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl +++ b/app/build/intermediates/assets/debug/shader/entityVertexShader.glsl @@ -9,12 +9,15 @@ varying vec2 pass_TexCoords; void main() { + + vec2 scale = vec2(1.0, 1.0); + if(texCoordScaling.x != 0.0) + scale.x = texCoordScaling.x; + if(texCoordScaling.y != 0.0) + scale.y *= texCoordScaling.y; + vec4 transformatedPosition = transformationMatrix * position; gl_Position = mvpMatrix * transformatedPosition; - pass_TexCoords = texCoords; - if(texCoordScaling.x != 0.0) - pass_TexCoords.x *= texCoordScaling.x; - if(texCoordScaling.y != 0.0) - pass_TexCoords.y *= texCoordScaling.y; + pass_TexCoords = scale * texCoords; } \ No newline at end of file diff --git a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml index 827a3e7..0ae04a6 100644 --- a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml +++ b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml @@ -18,6 +18,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" + android:testOnly="true" android:theme="@style/AppTheme" > - + - + @@ -468,22 +468,22 @@ - + - + - + - + @@ -498,7 +498,7 @@ - + diff --git a/app/src/main/assets/levelpacks/Icy Mountains.xml b/app/src/main/assets/levelpacks/Icy Mountains.xml index 692050c..9af12d8 100644 --- a/app/src/main/assets/levelpacks/Icy Mountains.xml +++ b/app/src/main/assets/levelpacks/Icy Mountains.xml @@ -1011,5 +1011,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/shader/entityVertexShader.glsl b/app/src/main/assets/shader/entityVertexShader.glsl index b96c4d4..5f7af0d 100644 --- a/app/src/main/assets/shader/entityVertexShader.glsl +++ b/app/src/main/assets/shader/entityVertexShader.glsl @@ -9,12 +9,15 @@ varying vec2 pass_TexCoords; void main() { + + vec2 scale = vec2(1.0, 1.0); + if(texCoordScaling.x != 0.0) + scale.x = texCoordScaling.x; + if(texCoordScaling.y != 0.0) + scale.y *= texCoordScaling.y; + vec4 transformatedPosition = transformationMatrix * position; gl_Position = mvpMatrix * transformatedPosition; - pass_TexCoords = texCoords; - if(texCoordScaling.x != 0.0) - pass_TexCoords.x *= texCoordScaling.x; - if(texCoordScaling.y != 0.0) - pass_TexCoords.y *= texCoordScaling.y; + pass_TexCoords = scale * texCoords; } \ No newline at end of file diff --git a/app/src/main/java/de/frajul/endlessroll/entities/Entity.java b/app/src/main/java/de/frajul/endlessroll/entities/Entity.java index 6e859e9..148993f 100644 --- a/app/src/main/java/de/frajul/endlessroll/entities/Entity.java +++ b/app/src/main/java/de/frajul/endlessroll/entities/Entity.java @@ -103,6 +103,14 @@ public class Entity extends Quad { return maxTexSize; } + public float calcTexScaleX() { + return getMaxTexSize().x == 0 ? 1 : getWidth() / getMaxTexSize().x; + } + + public float calcTexScaleY() { + return getMaxTexSize().y == 0 ? 1 : getHeight() / getMaxTexSize().y; + } + public void setVisible(boolean visible) { this.visible = visible; } diff --git a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java index 93fb13b..06e5505 100644 --- a/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java +++ b/app/src/main/java/de/frajul/endlessroll/entities/tools/ToolType.java @@ -31,7 +31,7 @@ public enum ToolType { new ToolUpgrade(ToolUpgradeType.COOLDOWN, 5000, 3000), new ToolUpgrade(ToolUpgradeType.FORCE, 100, 500)), POWER_MUSHROOM(R.string.tool_name_power_mushroom, R.string.tool_description_power_mushroom, - R.drawable.tools_power_mushroom, R.drawable.tools_power_mushroom_button, 5, + R.drawable.tools_power_mushroom, R.drawable.tools_power_mushroom_button, 50, 5, 7, new ToolUpgrade(ToolUpgradeType.COOLDOWN, 15000, 11000), new ToolUpgrade(ToolUpgradeType.DURATION, 5000, 10000)), STASIS(R.string.tool_name_stasis, R.string.tool_description_stasis, R.drawable.tools_stasis, diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/Game.java b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java index e3aadf7..6447975 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/game/Game.java +++ b/app/src/main/java/de/frajul/endlessroll/main/game/Game.java @@ -168,7 +168,7 @@ public class Game extends Rendering { if (gameState == GameState.RUNNING) { ToolButtonBar bar = viewManager.toolButtonBar; ToolButton button = bar.getByToolType(currentTool); - if (button != null && button.finishedLoading()) { + if (button != null && button.finishedLoading() && button.getToolType() != null) { if (event.getAction() == MotionEvent.ACTION_DOWN) { if (currentTool == ToolType.BOMB) { try { diff --git a/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java b/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java index 53d1bd8..9c7713b 100644 --- a/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java +++ b/app/src/main/java/de/frajul/endlessroll/main/game/TestScreenScene.java @@ -1,5 +1,7 @@ package de.frajul.endlessroll.main.game; +import de.frajul.endlessroll.data.Vector; +import de.frajul.endlessroll.entities.Entity; import de.frajul.endlessroll.entities.particles.ParticleSystem; import de.frajul.endlessroll.entities.shapes.PlayerShape; import de.frajul.endlessroll.entities.textures.TexturePack; @@ -10,10 +12,11 @@ public class TestScreenScene extends Scene { public TestScreenScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) { super(gameActivity, texturePack, particleSystem); - terrain.createEndless(World.GRASSLANDS, 0.6f); - background.changeTexture(World.ICY_MOUNTAINS.getBackgroundTexture()); - - player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem); - uncategorizedEntities.add(player); +// terrain.createEndless(World.GRASSLANDS, 0.6f); +// background.changeTexture(World.ICY_MOUNTAINS.getBackgroundTexture()); +// +// player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem); +// uncategorizedEntities.add(player); + uncategorizedEntities.add(new Entity(World.GRASSLANDS.getBackgroundTexture(), new Vector(), 1, 1)); } } \ No newline at end of file diff --git a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java index a8467d1..656d4cd 100644 --- a/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java +++ b/app/src/main/java/de/frajul/endlessroll/rendering/renderer/GameRenderer.java @@ -180,11 +180,7 @@ public class GameRenderer implements GLSurfaceView.Renderer { entityShader.loadTransformationMatrix(matrixCreator, entity); entityShader.loadAlpha(entity.getAlpha()); entityShader.loadTextureAtlasInfos(entity.getTexture(), entity.getTextureAtlasIndex()); - float texScaleX = entity.getMaxTexSize().x == 0 ? 1 : entity.getWidth() / entity - .getMaxTexSize().x; - float texScaleY = entity.getMaxTexSize().y == 0 ? 1 : entity.getHeight() / entity - .getMaxTexSize().y; - entityShader.loadTexCoordScaling(texScaleX, texScaleY); + entityShader.loadTexCoordScaling(entity.calcTexScaleX(), entity.calcTexScaleY()); quad.draw(); } diff --git a/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java b/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java index e0a9643..9700f96 100644 --- a/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java +++ b/app/src/main/java/de/frajul/endlessroll/views/ToolButtonBar.java @@ -108,7 +108,7 @@ public class ToolButtonBar implements View.OnClickListener{ } else if (v.equals(button4) && !buttons.get(3).isLocked()) { clickedButton = buttons.get(3); } - if (clickedButton != null) { + if (clickedButton != null && clickedButton.getToolType() != null) { game.setCurrentTool(clickedButton.getToolType(), clickedButton.finishedLoading()); setActive(clickedButton.getToolType()); } diff --git a/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java b/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java index 703802e..e14fa3f 100644 --- a/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java +++ b/particlelab/src/main/java/de/frajul/particlelab/rendering/GameRenderer.java @@ -8,6 +8,7 @@ import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import de.frajul.particlelab.data.Color; +import de.frajul.particlelab.data.Vector; import de.frajul.particlelab.entities.Entity; import de.frajul.particlelab.entities.particles.ParticleEffect; import de.frajul.particlelab.entities.particles.ParticleSource;