Changed Terrain Shader -> Terrain now has custom edges
@ -29,7 +29,6 @@
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="6.436699" width="18.873398"/>
|
||||
<tileData x="20.385015" width="9.023236"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3533306" rightEdge="5.3533306" height="0.331" y="-0.43450004">
|
||||
@ -247,7 +246,6 @@
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="2.700005" width="11.40001"/>
|
||||
<tileData x="17.183376" width="16.56669"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.656666" rightEdge="1.8566661" height="0.815" y="-0.19250003">
|
||||
|
@ -1,18 +0,0 @@
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform mat4 transformationMatrix;
|
||||
|
||||
attribute vec4 position;
|
||||
attribute vec2 texCoords;
|
||||
|
||||
varying vec2 pass_TexCoords;
|
||||
|
||||
void main() {
|
||||
|
||||
vec4 transformatedPosition = transformationMatrix * position;
|
||||
gl_Position = mvpMatrix * transformatedPosition;
|
||||
|
||||
pass_TexCoords = (transformationMatrix * vec4(texCoords, 0.0, 0.0)).xy;
|
||||
pass_TexCoords *= vec2(3.0, 3.0);
|
||||
pass_TexCoords.y = clamp(pass_TexCoords.y, 0.0, 1.0) + 0.01;
|
||||
|
||||
}
|
@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merger version="3"><dataSet config="main"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets"><file name="fontBaron.ttf" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\fontBaron.ttf"/><file name="levelpacks/Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Grasslands.xml"/><file name="levelpacks/Icy Mountains.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Icy Mountains.xml"/><file name="particleEffects/collectEnergy.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectEnergy.pe"/><file name="particleEffects/collectStar.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectStar.pe"/><file name="particleEffects/colorChange.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\colorChange.pe"/><file name="particleEffects/explosion.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\explosion.pe"/><file name="particleEffects/firework.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\firework.pe"/><file name="particleEffects/magnet.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\magnet.pe"/><file name="particleEffects/particle.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\particle.png"/><file name="particleEffects/star.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\star.png"/><file name="particleEffects/stasis.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\stasis.pe"/><file name="particleEffects/superPower.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\superPower.pe"/><file name="particleEffects/test_fire.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\test_fire.pe"/><file name="shader/entityFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityFragmentShader.glsl"/><file name="shader/entityVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityVertexShader.glsl"/><file name="shader/obstacleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\obstacleFragmentShader.glsl"/><file name="shader/particleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\particleFragmentShader.glsl"/><file name="shader/simpleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleFragmentShader.glsl"/><file name="shader/simpleVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleVertexShader.glsl"/><file name="shader/terrainVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\terrainVertexShader.glsl"/><file name="particleEffects/snow.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\snow.pe"/><file name="particleEffects/snow.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\snow.png"/></source><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\generated\assets\shaders\debug"/></dataSet><dataSet config="debug"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\debug\assets"/></dataSet></merger>
|
||||
<merger version="3"><dataSet config="main"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets"><file name="fontBaron.ttf" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\fontBaron.ttf"/><file name="levelpacks/Grasslands.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Grasslands.xml"/><file name="levelpacks/Icy Mountains.xml" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\levelpacks\Icy Mountains.xml"/><file name="particleEffects/collectEnergy.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectEnergy.pe"/><file name="particleEffects/collectStar.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\collectStar.pe"/><file name="particleEffects/colorChange.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\colorChange.pe"/><file name="particleEffects/explosion.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\explosion.pe"/><file name="particleEffects/firework.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\firework.pe"/><file name="particleEffects/magnet.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\magnet.pe"/><file name="particleEffects/particle.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\particle.png"/><file name="particleEffects/star.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\star.png"/><file name="particleEffects/stasis.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\stasis.pe"/><file name="particleEffects/superPower.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\superPower.pe"/><file name="particleEffects/test_fire.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\test_fire.pe"/><file name="shader/entityFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityFragmentShader.glsl"/><file name="shader/entityVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\entityVertexShader.glsl"/><file name="shader/obstacleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\obstacleFragmentShader.glsl"/><file name="shader/particleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\particleFragmentShader.glsl"/><file name="shader/simpleFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleFragmentShader.glsl"/><file name="shader/simpleVertexShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\simpleVertexShader.glsl"/><file name="particleEffects/snow.pe" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\snow.pe"/><file name="particleEffects/snow.png" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\particleEffects\snow.png"/><file name="shader/terrainFragmentShader.glsl" path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\main\assets\shader\terrainFragmentShader.glsl"/></source><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\build\generated\assets\shaders\debug"/></dataSet><dataSet config="debug"><source path="C:\Users\Julian\AndroidStudioProjects\EndlessRoll\app\src\debug\assets"/></dataSet></merger>
|
@ -29,7 +29,6 @@
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="6.436699" width="18.873398"/>
|
||||
<tileData x="20.385015" width="9.023236"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="false" moving="false" deadly="false" leftEdge="2.3533306" rightEdge="5.3533306" height="0.331" y="-0.43450004">
|
||||
@ -247,7 +246,6 @@
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="2.700005" width="11.40001"/>
|
||||
<tileData x="17.183376" width="16.56669"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="false" moving="false" deadly="false" leftEdge="1.656666" rightEdge="1.8566661" height="0.815" y="-0.19250003">
|
||||
|
@ -7,12 +7,10 @@
|
||||
<tileData x="8.559853" width="0.42468548"/>
|
||||
<tileData x="14.852292" width="3.8621922"/>
|
||||
<tileData x="19.439503" width="4.192238"/>
|
||||
<tileData x="24.228848" width="3.6224518"/>
|
||||
<tileData x="28.089983" width="4.099819"/>
|
||||
<tileData x="26.278606" width="7.721974"/>
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="11.520037" width="29.040073"/>
|
||||
<tileData x="26.26674" width="0.45332718"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="true" moving="true" deadly="true" leftEdge="0.65783304" rightEdge="0.988833" height="0.51" y="-0.34500003">
|
||||
@ -167,7 +165,6 @@
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="8.863336" width="23.726671"/>
|
||||
<tileData x="23.293339" width="5.1333294"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList">
|
||||
<obstacleData floating="true" moving="true" deadly="false" leftEdge="-0.34966657" rightEdge="0.23633346" height="0.344" y="-0.91999984">
|
||||
@ -435,5 +432,18 @@
|
||||
</stars>
|
||||
<energy x="18.570074" y="0.46666658"/>
|
||||
</level>
|
||||
<level packId="2" id="7" goalX="3.0" startSpeed="0.5" endSpeed="0.5" terrainEdge="-0.6" ceilingEdge="1.0">
|
||||
<terrainTiles class="java.util.ArrayList">
|
||||
<tileData x="0.0" width="6.0"/>
|
||||
</terrainTiles>
|
||||
<ceilingTiles class="java.util.ArrayList">
|
||||
<tileData x="0.0" width="6.0"/>
|
||||
</ceilingTiles>
|
||||
<obstacles class="java.util.ArrayList"/>
|
||||
<stars class="java.util.ArrayList">
|
||||
<positionData x="0.3066666" y="-0.37999997"/>
|
||||
</stars>
|
||||
<energy x="1.9466664" y="-0.3933333"/>
|
||||
</level>
|
||||
</levels>
|
||||
</levelPack>
|
46
app/src/main/assets/shader/terrainFragmentShader.glsl
Normal file
@ -0,0 +1,46 @@
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D texture;
|
||||
uniform float gridColumnCount;
|
||||
uniform float isEndlessTileList;
|
||||
|
||||
varying vec2 pass_TexCoords;
|
||||
|
||||
const float texAtlasWidth = 3.0;
|
||||
|
||||
float getAtlasIndex();
|
||||
vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex);
|
||||
|
||||
void main() {
|
||||
|
||||
float atlasIndex = getAtlasIndex();
|
||||
vec2 texCoordsInGrid = pass_TexCoords;
|
||||
texCoordsInGrid.x *= gridColumnCount;
|
||||
texCoordsInGrid.x = mod(texCoordsInGrid.x, 1.0);
|
||||
vec2 texCoordsInAtlas = getTexCoordsInAtlas(texCoordsInGrid, atlasIndex);
|
||||
|
||||
gl_FragColor = texture2D(texture, texCoordsInAtlas);
|
||||
gl_FragColor.rgb = gl_FragColor.rgb / gl_FragColor.a;
|
||||
}
|
||||
|
||||
float getAtlasIndex(){
|
||||
|
||||
if(isEndlessTileList == 1.0)
|
||||
return 1.0;
|
||||
|
||||
if(pass_TexCoords.x < 1.0 / gridColumnCount)
|
||||
return 0.0;
|
||||
if(pass_TexCoords.x > 1.0 - 1.0 / gridColumnCount)
|
||||
return 2.0;
|
||||
return 1.0;
|
||||
|
||||
}
|
||||
|
||||
vec2 getTexCoordsInAtlas(in vec2 texCoordsInGrid, in float atlasIndex){
|
||||
|
||||
vec2 texAtlasCoords = vec2(0.0, texCoordsInGrid.y);
|
||||
texAtlasCoords.x = texCoordsInGrid.x / texAtlasWidth;
|
||||
texAtlasCoords.x += mod(atlasIndex, texAtlasWidth) / texAtlasWidth;
|
||||
return texAtlasCoords;
|
||||
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
uniform mat4 mvpMatrix;
|
||||
uniform mat4 transformationMatrix;
|
||||
|
||||
attribute vec4 position;
|
||||
attribute vec2 texCoords;
|
||||
|
||||
varying vec2 pass_TexCoords;
|
||||
|
||||
void main() {
|
||||
|
||||
vec4 transformatedPosition = transformationMatrix * position;
|
||||
gl_Position = mvpMatrix * transformatedPosition;
|
||||
|
||||
pass_TexCoords = (transformationMatrix * vec4(texCoords, 0.0, 0.0)).xy;
|
||||
pass_TexCoords *= vec2(3.0, 3.0);
|
||||
pass_TexCoords.y = clamp(pass_TexCoords.y, 0.0, 1.0) + 0.01;
|
||||
|
||||
}
|
@ -11,6 +11,8 @@ import de.frajul.endlessroll.levels.TileData;
|
||||
|
||||
public class Tile extends Entity {
|
||||
|
||||
private int gridColumnCount;
|
||||
|
||||
public Tile(TileList.Type type, Texture texture, float edge, TileData data) {
|
||||
this(type, texture, edge, data.getX(), data.getWidth());
|
||||
}
|
||||
@ -27,6 +29,11 @@ public class Tile extends Entity {
|
||||
super.position.y = edge + super.height / 2;
|
||||
break;
|
||||
}
|
||||
gridColumnCount = (int) (width / height);
|
||||
gridColumnCount = Math.max(gridColumnCount, 3);
|
||||
}
|
||||
|
||||
public int getGridColumnCount() {
|
||||
return gridColumnCount;
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +1,30 @@
|
||||
package de.frajul.endlessroll.entities.tileLists;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.frajul.endlessroll.data.SynchronizedArrayList;
|
||||
import de.frajul.endlessroll.entities.textures.Texture;
|
||||
import de.frajul.endlessroll.levels.TileData;
|
||||
import de.frajul.endlessroll.levels.worlds.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import de.frajul.endlessroll.main.GameLog;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class TileList extends SynchronizedArrayList<Tile> {
|
||||
|
||||
public enum Type {
|
||||
TERRAIN, CEILING;
|
||||
TERRAIN,
|
||||
CEILING;
|
||||
|
||||
public float calculateTileHeightFromEdge(float edge) {
|
||||
switch (this) {
|
||||
case TERRAIN:
|
||||
if (edge <= -0.6f)
|
||||
return 0.4f;
|
||||
return 1 + edge;
|
||||
case CEILING:
|
||||
if (edge >= 0.6f)
|
||||
return 0.4f;
|
||||
return 1 - edge;
|
||||
}
|
||||
return 0;
|
||||
@ -42,13 +48,24 @@ public class TileList extends SynchronizedArrayList<Tile> {
|
||||
this.texture = world.getCeilingTexture();
|
||||
this.endless = false;
|
||||
super.clear();
|
||||
for (TileData data : tileData)
|
||||
float lastRightEdge = -10;
|
||||
for (TileData data : tileData) {
|
||||
float leftEdge = data.getX() - data.getWidth() / 2;
|
||||
float rightEdge = data.getX() + data.getWidth() / 2;
|
||||
if (Math.abs(lastRightEdge - leftEdge) < 0.1f)
|
||||
GameLog.i("!!! Too small gap found !!! " + toMeters(lastRightEdge) + "m; " + lastRightEdge + "-"+leftEdge+"; iRight="+tileData.indexOf(data));
|
||||
lastRightEdge = rightEdge;
|
||||
super.add(new Tile(type, texture, edge, data));
|
||||
}
|
||||
this.edge = edge;
|
||||
if (edge >= 1 || edge <= -1)
|
||||
super.clear();
|
||||
}
|
||||
|
||||
private float toMeters(float value) {
|
||||
return ((int) (value * 20)) / 10f;
|
||||
}
|
||||
|
||||
public void createEndless(World world, float edge) {
|
||||
loadData(world, edge, new ArrayList<TileData>());
|
||||
super.add(createEndlessTile(0));
|
||||
@ -76,4 +93,7 @@ public class TileList extends SynchronizedArrayList<Tile> {
|
||||
return edge;
|
||||
}
|
||||
|
||||
public boolean isEndless() {
|
||||
return endless;
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,8 @@ import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
|
||||
public enum World {
|
||||
|
||||
GRASSLANDS("Grasslands", R.drawable.world_previews_grasslands, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
|
||||
ICY_MOUNTAINS("Icy Mountains", R.drawable.world_previews_icymountains, R.drawable.backgrounds_game_snow, R.drawable.terrain_t_ice, R.drawable.terrain_c_ice, R.drawable.obstacles_snow);
|
||||
GRASSLANDS(R.drawable.world_previews_grasslands, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
|
||||
ICY_MOUNTAINS(R.drawable.world_previews_icymountains, R.drawable.backgrounds_game_snow, R.drawable.terrain_t_ice, R.drawable.terrain_c_ice, R.drawable.obstacles_snow);
|
||||
|
||||
private String name;
|
||||
@DrawableRes
|
||||
@ -32,8 +32,7 @@ public enum World {
|
||||
private Texture ceiling;
|
||||
private Texture obstacle;
|
||||
|
||||
World(String name, @DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) {
|
||||
this.name = name;
|
||||
World(@DrawableRes int previewId, @DrawableRes int backgroundId, @DrawableRes int terrainId, @DrawableRes int ceilingId, @DrawableRes int obstacleId) {
|
||||
this.previewId = previewId;
|
||||
this.backgroundId = backgroundId;
|
||||
this.terrainId = terrainId;
|
||||
@ -53,10 +52,6 @@ public enum World {
|
||||
obstacle = texturePack.loadAtlas(obstacleId, 8, 8);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getPreviewId() {
|
||||
return previewId;
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import de.frajul.endlessroll.entities.particles.Firework;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleEffect;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
||||
import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
import de.frajul.endlessroll.levels.ObstacleData;
|
||||
import de.frajul.endlessroll.levels.worlds.World;
|
||||
@ -16,9 +17,10 @@ public class TestScreenScene extends Scene {
|
||||
|
||||
public TestScreenScene(GameActivity gameActivity, TexturePack texturePack, ParticleSystem particleSystem) {
|
||||
super(gameActivity, texturePack, particleSystem);
|
||||
terrain.createEndless(World.ICY_MOUNTAINS, -1.0f);
|
||||
terrain.createEndless(World.GRASSLANDS, 0.6f);
|
||||
background.changeTexture(World.ICY_MOUNTAINS.getBackgroundTexture());
|
||||
new ParticleSource(new Vector(0, 0.0f), particleSystem.colorChange).start();
|
||||
}
|
||||
|
||||
player.init(PlayerShape.BALL, 0.6f, 0.5f, 0.5f, particleSystem);
|
||||
uncategorizedEntities.add(player);
|
||||
}
|
||||
}
|
@ -189,11 +189,13 @@ public class GameRenderer implements GLSurfaceView.Renderer {
|
||||
private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
|
||||
terrainShader.start();
|
||||
terrainShader.loadMVPMatrix(matrixCreator, scene.getCamera());
|
||||
terrainShader.loadIsEndlessTileList(tileList.isEndless());
|
||||
synchronized (tileList) {
|
||||
for (Tile tile : tileList) {
|
||||
gl.glActiveTexture(GL10.GL_TEXTURE0);
|
||||
gl.glBindTexture(GL10.GL_TEXTURE_2D, tile.getTexture().getId());
|
||||
terrainShader.loadTransformationMatrix(matrixCreator, tile);
|
||||
terrainShader.loadGridColumnCount(tile.getGridColumnCount());
|
||||
quad.draw();
|
||||
}
|
||||
}
|
||||
|
@ -14,15 +14,27 @@ public class TerrainShader extends ShaderProgram {
|
||||
|
||||
private int location_mvpMatrix;
|
||||
private int location_transformationMatrix;
|
||||
private int location_gridColumnCount;
|
||||
private int location_isEndlessTileList;
|
||||
|
||||
public TerrainShader(Context context) throws Exception {
|
||||
super(context, "shader/terrainVertexShader.glsl", "shader/simpleFragmentShader.glsl");
|
||||
super(context, "shader/entityVertexShader.glsl", "shader/terrainFragmentShader.glsl");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadUniformLocations() {
|
||||
location_mvpMatrix = super.getUniformLocation("mvpMatrix");
|
||||
location_transformationMatrix = super.getUniformLocation("transformationMatrix");
|
||||
location_gridColumnCount = super.getUniformLocation("gridColumnCount");
|
||||
location_isEndlessTileList = super.getUniformLocation("isEndlessTileList");
|
||||
}
|
||||
|
||||
public void loadGridColumnCount(int gridColumnCount) {
|
||||
GLES20.glUniform1f(location_gridColumnCount, gridColumnCount);
|
||||
}
|
||||
|
||||
public void loadIsEndlessTileList(boolean endless) {
|
||||
GLES20.glUniform1f(location_isEndlessTileList, endless ? 1f : 0f);
|
||||
}
|
||||
|
||||
public void loadMVPMatrix(MatrixCreator matrixCreator, Camera camera) {
|
||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 35 KiB |