Synchronized lists that are rendered
Removed lock from Scene
This commit is contained in:
parent
def72f84b2
commit
7cf0868730
Binary file not shown.
@ -0,0 +1,147 @@
|
|||||||
|
package com.example.julian.endlessroll.data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Julian on 16.11.2016.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SynchronizedArrayList<E> extends ArrayList<E> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized String toString() {
|
||||||
|
return super.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean add(E object) {
|
||||||
|
return super.add(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void add(int index, E object) {
|
||||||
|
super.add(index, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean addAll(Collection<? extends E> collection) {
|
||||||
|
return super.addAll(collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean addAll(int index, Collection<? extends E> collection) {
|
||||||
|
return super.addAll(index, collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void clear() {
|
||||||
|
super.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized Object clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void ensureCapacity(int minimumCapacity) {
|
||||||
|
super.ensureCapacity(minimumCapacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized E get(int index) {
|
||||||
|
return super.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int size() {
|
||||||
|
return super.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean isEmpty() {
|
||||||
|
return super.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean contains(Object object) {
|
||||||
|
return super.contains(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int indexOf(Object object) {
|
||||||
|
return super.indexOf(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int lastIndexOf(Object object) {
|
||||||
|
return super.lastIndexOf(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized E remove(int index) {
|
||||||
|
return super.remove(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean remove(Object object) {
|
||||||
|
return super.remove(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected synchronized void removeRange(int fromIndex, int toIndex) {
|
||||||
|
super.removeRange(fromIndex, toIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized E set(int index, E object) {
|
||||||
|
return super.set(index, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized Object[] toArray() {
|
||||||
|
return super.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized <T> T[] toArray(T[] contents) {
|
||||||
|
return super.toArray(contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void trimToSize() {
|
||||||
|
super.trimToSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int hashCode() {
|
||||||
|
return super.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean equals(Object o) {
|
||||||
|
return super.equals(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized List<E> subList(int start, int end) {
|
||||||
|
return super.subList(start, end);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean containsAll(Collection<?> collection) {
|
||||||
|
return super.containsAll(collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean removeAll(Collection<?> collection) {
|
||||||
|
return super.removeAll(collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized boolean retainAll(Collection<?> collection) {
|
||||||
|
return super.retainAll(collection);
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +1,13 @@
|
|||||||
package com.example.julian.endlessroll.entities;
|
package com.example.julian.endlessroll.entities;
|
||||||
|
|
||||||
|
import com.example.julian.endlessroll.data.SynchronizedArrayList;
|
||||||
import com.example.julian.endlessroll.data.Vector;
|
import com.example.julian.endlessroll.data.Vector;
|
||||||
import com.example.julian.endlessroll.entities.textures.Texture;
|
import com.example.julian.endlessroll.entities.textures.Texture;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Julian on 20.07.2016.
|
* Created by Julian on 20.07.2016.
|
||||||
*/
|
*/
|
||||||
public class Background extends ArrayList<Entity> {
|
public class Background extends SynchronizedArrayList<Entity> {
|
||||||
|
|
||||||
private final float PART_WIDTH = 5;
|
private final float PART_WIDTH = 5;
|
||||||
private final float HALF_PART_WIDTH = PART_WIDTH / 2;
|
private final float HALF_PART_WIDTH = PART_WIDTH / 2;
|
||||||
@ -21,9 +20,11 @@ public class Background extends ArrayList<Entity> {
|
|||||||
|
|
||||||
public void changeTexture(Texture texture) {
|
public void changeTexture(Texture texture) {
|
||||||
this.texture = texture;
|
this.texture = texture;
|
||||||
|
synchronized (this) {
|
||||||
for (Entity entity : this)
|
for (Entity entity : this)
|
||||||
entity.setTexture(texture);
|
entity.setTexture(texture);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Entity createPart(float xLeftEdge) {
|
private Entity createPart(float xLeftEdge) {
|
||||||
return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, 0), PART_WIDTH, 2);
|
return new Entity(texture, new Vector(xLeftEdge + HALF_PART_WIDTH, 0), PART_WIDTH, 2);
|
||||||
@ -31,8 +32,10 @@ public class Background extends ArrayList<Entity> {
|
|||||||
|
|
||||||
public void move(float x, float cameraX) {
|
public void move(float x, float cameraX) {
|
||||||
Vector movement = new Vector(x, 0);
|
Vector movement = new Vector(x, 0);
|
||||||
|
synchronized (this) {
|
||||||
for (Entity part : this)
|
for (Entity part : this)
|
||||||
part.move(movement);
|
part.move(movement);
|
||||||
|
}
|
||||||
if (!super.isEmpty()) {
|
if (!super.isEmpty()) {
|
||||||
Entity last = super.get(super.size() - 1);
|
Entity last = super.get(super.size() - 1);
|
||||||
if (last.getRightEdge() - cameraX < 3) {
|
if (last.getRightEdge() - cameraX < 3) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.example.julian.endlessroll.entities.tileLists;
|
package com.example.julian.endlessroll.entities.tileLists;
|
||||||
|
|
||||||
|
import com.example.julian.endlessroll.data.SynchronizedArrayList;
|
||||||
import com.example.julian.endlessroll.entities.Entity;
|
import com.example.julian.endlessroll.entities.Entity;
|
||||||
import com.example.julian.endlessroll.entities.textures.Texture;
|
import com.example.julian.endlessroll.entities.textures.Texture;
|
||||||
import com.example.julian.endlessroll.levels.TileData;
|
import com.example.julian.endlessroll.levels.TileData;
|
||||||
@ -9,7 +10,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class TileList extends ArrayList<Tile> {
|
public class TileList extends SynchronizedArrayList<Tile> {
|
||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
TERRAIN, CEILING;
|
TERRAIN, CEILING;
|
||||||
|
@ -19,6 +19,7 @@ import com.example.julian.endlessroll.levels.worlds.World;
|
|||||||
import com.example.julian.endlessroll.main.GameLog;
|
import com.example.julian.endlessroll.main.GameLog;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -46,14 +47,12 @@ public class GameScene extends Scene {
|
|||||||
public void loadLevel(Level level, World world) throws Exception {
|
public void loadLevel(Level level, World world) throws Exception {
|
||||||
this.currentWorld = world;
|
this.currentWorld = world;
|
||||||
reset();
|
reset();
|
||||||
lock.lock();
|
|
||||||
background.changeTexture(world.getBackground());
|
background.changeTexture(world.getBackground());
|
||||||
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
|
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
|
||||||
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
|
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
|
||||||
super.add(goal);
|
super.add(goal);
|
||||||
player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed());
|
player.init(terrain.getEdge(), level.getStartSpeed(), level.getEndSpeed());
|
||||||
super.add(player);
|
super.add(player);
|
||||||
lock.unlock();
|
|
||||||
for (ObstacleData data : level.getObstacles())
|
for (ObstacleData data : level.getObstacles())
|
||||||
addObstacle(data);
|
addObstacle(data);
|
||||||
for (StarData data : level.getStars()) {
|
for (StarData data : level.getStars()) {
|
||||||
@ -71,9 +70,7 @@ public class GameScene extends Scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reset() {
|
private void reset() {
|
||||||
lock.lock();
|
|
||||||
super.clear();
|
super.clear();
|
||||||
lock.unlock();
|
|
||||||
obstacles.clear();
|
obstacles.clear();
|
||||||
tools.clear();
|
tools.clear();
|
||||||
cameraX = 0;
|
cameraX = 0;
|
||||||
@ -81,7 +78,6 @@ public class GameScene extends Scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onStarCollision(Star collisionStar) {
|
public void onStarCollision(Star collisionStar) {
|
||||||
lock.lock();
|
|
||||||
Iterator<Star> iter = stars.iterator();
|
Iterator<Star> iter = stars.iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
Star star = iter.next();
|
Star star = iter.next();
|
||||||
@ -90,24 +86,18 @@ public class GameScene extends Scene {
|
|||||||
iter.remove();
|
iter.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock.unlock();
|
|
||||||
//TODO: change lock with atomic lists!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addObstacle(ObstacleData data) {
|
public void addObstacle(ObstacleData data) {
|
||||||
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge());
|
Obstacle obstacle = new Obstacle(currentWorld, data, terrain.getEdge());
|
||||||
lock.lock();
|
|
||||||
super.add(obstacle);
|
super.add(obstacle);
|
||||||
obstacles.add(obstacle);
|
obstacles.add(obstacle);
|
||||||
lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addStar(StarData data) {
|
public void addStar(StarData data) {
|
||||||
Star star = new Star(textures.star, data);
|
Star star = new Star(textures.star, data);
|
||||||
lock.lock();
|
|
||||||
super.add(star);
|
super.add(star);
|
||||||
stars.add(star);
|
stars.add(star);
|
||||||
lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTool(ToolType type, float screenX, float screenY) throws Exception {
|
public void addTool(ToolType type, float screenX, float screenY) throws Exception {
|
||||||
@ -115,10 +105,8 @@ public class GameScene extends Scene {
|
|||||||
Tool tool = type.newInstance(position, particleSystem);
|
Tool tool = type.newInstance(position, particleSystem);
|
||||||
if (tool == null)
|
if (tool == null)
|
||||||
throw new Exception("Current ToolType(" + type + ") returns null at method newInstance()");
|
throw new Exception("Current ToolType(" + type + ") returns null at method newInstance()");
|
||||||
lock.lock();
|
|
||||||
super.add(tool);
|
super.add(tool);
|
||||||
tools.add(tool);
|
tools.add(tool);
|
||||||
lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -126,7 +114,6 @@ public class GameScene extends Scene {
|
|||||||
public void update(Timer timer) {
|
public void update(Timer timer) {
|
||||||
super.update(timer);
|
super.update(timer);
|
||||||
player.setSpeedByProgress(player.getProgress() / goalX);
|
player.setSpeedByProgress(player.getProgress() / goalX);
|
||||||
lock.lock();
|
|
||||||
for (Tool tool : tools) {
|
for (Tool tool : tools) {
|
||||||
tool.update(timer);
|
tool.update(timer);
|
||||||
if (tool instanceof Bomb) {
|
if (tool instanceof Bomb) {
|
||||||
@ -135,7 +122,6 @@ public class GameScene extends Scene {
|
|||||||
bomb.explode(obstacles, collisionDetector);
|
bomb.explode(obstacles, collisionDetector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,7 +35,6 @@ public class Physics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void applyGravity(GameScene scene) {
|
public void applyGravity(GameScene scene) {
|
||||||
scene.lock.lock();
|
|
||||||
scene.getPlayer().getMovement().y -= GRAVITY_FORCE;
|
scene.getPlayer().getMovement().y -= GRAVITY_FORCE;
|
||||||
for (Tool tool : scene.getTools()) {
|
for (Tool tool : scene.getTools()) {
|
||||||
if (tool.isFloating())
|
if (tool.isFloating())
|
||||||
@ -71,7 +70,6 @@ public class Physics {
|
|||||||
tool.setToTerrain(orientingHeight);
|
tool.setToTerrain(orientingHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
scene.lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.example.julian.endlessroll.main.game;
|
package com.example.julian.endlessroll.main.game;
|
||||||
|
|
||||||
|
import com.example.julian.endlessroll.data.SynchronizedArrayList;
|
||||||
import com.example.julian.endlessroll.data.Vector;
|
import com.example.julian.endlessroll.data.Vector;
|
||||||
import com.example.julian.endlessroll.entities.Background;
|
import com.example.julian.endlessroll.entities.Background;
|
||||||
import com.example.julian.endlessroll.entities.Entity;
|
import com.example.julian.endlessroll.entities.Entity;
|
||||||
@ -11,16 +12,14 @@ import com.example.julian.endlessroll.entities.tileLists.Terrain;
|
|||||||
import com.example.julian.endlessroll.levels.worlds.World;
|
import com.example.julian.endlessroll.levels.worlds.World;
|
||||||
import com.example.julian.endlessroll.rendering.Lock;
|
import com.example.julian.endlessroll.rendering.Lock;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Julian on 20.07.2016.
|
* Created by Julian on 20.07.2016.
|
||||||
*/
|
*/
|
||||||
public abstract class Scene extends ArrayList<Entity> {
|
public abstract class Scene extends SynchronizedArrayList<Entity> {
|
||||||
|
|
||||||
public float cameraX;
|
public float cameraX;
|
||||||
public final Lock lock;
|
|
||||||
|
|
||||||
private Vector screenSize;
|
private Vector screenSize;
|
||||||
private Entity playerArrow;
|
private Entity playerArrow;
|
||||||
@ -40,7 +39,6 @@ public abstract class Scene extends ArrayList<Entity> {
|
|||||||
terrain = new Terrain(World.GRASSLANDS.getTerrain());
|
terrain = new Terrain(World.GRASSLANDS.getTerrain());
|
||||||
ceiling = new Ceiling(World.GRASSLANDS.getTerrain());
|
ceiling = new Ceiling(World.GRASSLANDS.getTerrain());
|
||||||
player = new Player(textures.player);
|
player = new Player(textures.player);
|
||||||
lock = new Lock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTexturePack(TexturePack texturePack) {
|
public void setTexturePack(TexturePack texturePack) {
|
||||||
@ -48,7 +46,7 @@ public abstract class Scene extends ArrayList<Entity> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void update(Timer timer) {
|
public void update(Timer timer) {
|
||||||
lock.lock();
|
synchronized (this) {
|
||||||
Iterator<Entity> iterator = super.iterator();
|
Iterator<Entity> iterator = super.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Entity entity = iterator.next();
|
Entity entity = iterator.next();
|
||||||
@ -64,6 +62,7 @@ public abstract class Scene extends ArrayList<Entity> {
|
|||||||
removeEntityFromAllLists(entity);
|
removeEntityFromAllLists(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (player.getPosition().y >= player.RADIUS + 1) {
|
if (player.getPosition().y >= player.RADIUS + 1) {
|
||||||
playerArrow.getPosition().x = player.getPosition().x;
|
playerArrow.getPosition().x = player.getPosition().x;
|
||||||
@ -71,11 +70,10 @@ public abstract class Scene extends ArrayList<Entity> {
|
|||||||
super.add(playerArrow);
|
super.add(playerArrow);
|
||||||
}
|
}
|
||||||
} else super.remove(playerArrow);
|
} else super.remove(playerArrow);
|
||||||
lock.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean remove(Object object) {
|
public synchronized boolean remove(Object object) {
|
||||||
removeEntityFromAllLists((Entity) object);
|
removeEntityFromAllLists((Entity) object);
|
||||||
return super.remove(object);
|
return super.remove(object);
|
||||||
}
|
}
|
||||||
@ -103,15 +101,15 @@ public abstract class Scene extends ArrayList<Entity> {
|
|||||||
this.screenSize = screenSize;
|
this.screenSize = screenSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Background getBackground() {
|
public synchronized Background getBackground() {
|
||||||
return background;
|
return background;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Terrain getTerrain() {
|
public synchronized Terrain getTerrain() {
|
||||||
return terrain;
|
return terrain;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Ceiling getCeiling() {
|
public synchronized Ceiling getCeiling() {
|
||||||
return ceiling;
|
return ceiling;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,11 +104,9 @@ public class GameRenderer implements GLSurfaceView.Renderer {
|
|||||||
GLES20.glClearColor(1, 1, 1, 1.0f);
|
GLES20.glClearColor(1, 1, 1, 1.0f);
|
||||||
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
|
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
scene.lock.lock();
|
|
||||||
renderEntities(gl, scene);
|
renderEntities(gl, scene);
|
||||||
renderTileList(gl, scene.getTerrain(), scene);
|
renderTileList(gl, scene.getTerrain(), scene);
|
||||||
renderTileList(gl, scene.getCeiling(), scene);
|
renderTileList(gl, scene.getCeiling(), scene);
|
||||||
scene.lock.unlock();
|
|
||||||
renderFbo(gl);
|
renderFbo(gl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,10 +114,14 @@ public class GameRenderer implements GLSurfaceView.Renderer {
|
|||||||
private void renderEntities(GL10 gl, Scene scene) {
|
private void renderEntities(GL10 gl, Scene scene) {
|
||||||
entityShader.start();
|
entityShader.start();
|
||||||
entityShader.loadMVPMatrix(matrixCreator, scene.cameraX);
|
entityShader.loadMVPMatrix(matrixCreator, scene.cameraX);
|
||||||
|
synchronized (scene.getBackground()) {
|
||||||
for (Entity backgroundPart : scene.getBackground())
|
for (Entity backgroundPart : scene.getBackground())
|
||||||
renderEntity(gl, backgroundPart);
|
renderEntity(gl, backgroundPart);
|
||||||
|
}
|
||||||
|
synchronized (scene) {
|
||||||
for (Entity entity : scene)
|
for (Entity entity : scene)
|
||||||
renderEntity(gl, entity);
|
renderEntity(gl, entity);
|
||||||
|
}
|
||||||
entityShader.stop();
|
entityShader.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,12 +137,14 @@ public class GameRenderer implements GLSurfaceView.Renderer {
|
|||||||
private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
|
private void renderTileList(GL10 gl, TileList tileList, Scene scene) {
|
||||||
terrainShader.start();
|
terrainShader.start();
|
||||||
terrainShader.loadMVPMatrix(matrixCreator, scene.cameraX);
|
terrainShader.loadMVPMatrix(matrixCreator, scene.cameraX);
|
||||||
|
synchronized (tileList) {
|
||||||
for (Tile tile : tileList) {
|
for (Tile tile : tileList) {
|
||||||
gl.glActiveTexture(GL10.GL_TEXTURE0);
|
gl.glActiveTexture(GL10.GL_TEXTURE0);
|
||||||
gl.glBindTexture(GL10.GL_TEXTURE_2D, tile.getTexture().getId());
|
gl.glBindTexture(GL10.GL_TEXTURE_2D, tile.getTexture().getId());
|
||||||
terrainShader.loadTransformationMatrix(matrixCreator, tile);
|
terrainShader.loadTransformationMatrix(matrixCreator, tile);
|
||||||
quad.draw();
|
quad.draw();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
terrainShader.stop();
|
terrainShader.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,14 +66,6 @@
|
|||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||||
@ -82,6 +74,14 @@
|
|||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user