Changed how animated textures work,

continuing on working on fixing the renderer.
This commit is contained in:
jsrobson10 2020-06-12 18:34:05 +10:00
parent 9e6ef227cc
commit 7dbe75a497
283 changed files with 734 additions and 1106 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

View File

@ -22,7 +22,6 @@ import projectzombie.input.MouseButtonCallback;
import projectzombie.input.ScrollWheelCallback;
import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.AnimationEventHandler;
public class DisplayWindow implements IMainloopTask
{
@ -92,7 +91,6 @@ public class DisplayWindow implements IMainloopTask
// Register the display event loop
Main.mainloop.register(this);
Main.mainloop.register(AnimationEventHandler.ANIMATION_EVENT_HANDLER);
}
public void render()

View File

@ -12,6 +12,7 @@ import mainloop.task.IMainloopTask;
import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.init.Entities;
import projectzombie.model.Model;
import projectzombie.tiles.Tile;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState;
@ -22,10 +23,9 @@ import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer;
public class Entity implements IBdfClassManager
public abstract class Entity implements IBdfClassManager
{
public Vec2d pos;
public boolean opaqueTile = true;
public double hitbox = 1;
public boolean isSolid = false;
public Chunk chunk;
@ -35,9 +35,10 @@ public class Entity implements IBdfClassManager
public boolean goThroughSolid = true;
protected static final Random rand = new Random();
public boolean emitsLight = false;
public int stepOnTileCooldown = 0;
public abstract Model getModel();
protected double getTilesLightDissipation() {
if(chunk == null) return 0;
TileState tsf = chunk.getFrontTile(pos.toInt());
@ -117,7 +118,6 @@ public class Entity implements IBdfClassManager
BdfNamedList nl = bdf.getNamedList();
BdfArray e = nl.get("e").getArray();
pos = new Vec2d(e.get(0));
opaqueTile = e.get(1).getBoolean();
hitbox = e.get(2).getDouble();
isSolid = e.get(3).getBoolean();
crossUnWalkable = e.get(4).getBoolean();
@ -143,7 +143,6 @@ public class Entity implements IBdfClassManager
nl.set("e", BdfObject.withArray(e));
e.add(pos_bdf);
e.add(BdfObject.withBoolean(opaqueTile));
e.add(BdfObject.withDouble(hitbox));
e.add(BdfObject.withBoolean(isSolid));
e.add(BdfObject.withBoolean(crossUnWalkable));
@ -184,21 +183,6 @@ public class Entity implements IBdfClassManager
}
}
public void render(Vec2d pos, Camera camera) {
}
public void render(Vec2d pos, Camera camera, TileState state) {
this.render(pos, camera);
}
public void doRender(Vec2d pos, Camera camera) {
this.render(pos, camera);
}
public boolean isOpaqueTile() {
return this.opaqueTile;
}
public void moveTowards(double angle, double speed)
{
if(chunk == null) {

View File

@ -11,6 +11,7 @@ import projectzombie.display.bossbar.IBossBar;
import projectzombie.init.Items;
import projectzombie.init.Models;
import projectzombie.init.Tiles;
import projectzombie.model.Model;
import projectzombie.time.GameTimer;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack;
@ -23,7 +24,7 @@ import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class EntityBoss extends EntityVertical implements IBossBar, EntityKillWithParticles
public class EntityBoss extends Entity implements IBossBar, EntityKillWithParticles
{
private boolean moving = false;
private boolean firing = false;
@ -42,7 +43,7 @@ public class EntityBoss extends EntityVertical implements IBossBar, EntityKillWi
private long seed;
public EntityBoss(BdfObject bdf) {
super(bdf, TextureReference.EMPTY, new Vec2d(4, 4));
super(bdf);
}
@Override
@ -82,7 +83,7 @@ public class EntityBoss extends EntityVertical implements IBossBar, EntityKillWi
}
public EntityBoss(Vec2d pos) {
super(pos, TextureReference.EMPTY, new Vec2d(4, 4));
super(pos);
this.isSolid = true;
this.goThroughSolid = false;
@ -178,24 +179,6 @@ public class EntityBoss extends EntityVertical implements IBossBar, EntityKillWi
time += 0.001;
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size)
{
// Get the boss texture
if(moving && firing) {
tex = Models.ENTITY_BOSS_WALKING_AND_FIRING;
} else if(moving) {
tex = Models.ENTITY_BOSS_WALKING;
} else if(firing) {
tex = Models.ENTITY_BOSS_FIRING;
} else {
tex = Models.ENTITY_BOSS_IDLE;
}
// Call render
super.render(pos, camera, tex, size);
}
@Override
public void addHealth(double amount) {
this.health += amount;
@ -282,4 +265,24 @@ public class EntityBoss extends EntityVertical implements IBossBar, EntityKillWi
@Override
protected void moveAwayFromSolidEntities(Layer layer) {
}
@Override
public void killWithParticles() {
// TODO Auto-generated method stub
}
@Override
public Model getModel()
{
if(moving && firing) {
return Models.ENTITY_BOSS_WALKING_AND_FIRING;
} else if(moving) {
return Models.ENTITY_BOSS_WALKING;
} else if(firing) {
return Models.ENTITY_BOSS_FIRING;
} else {
return Models.ENTITY_BOSS_IDLE;
}
}
}

View File

@ -4,7 +4,9 @@ import bdf.types.BdfNamedList;
import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.entity.particle.ParticleBlood;
import projectzombie.init.Models;
import projectzombie.init.Sounds;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.tiles.Tile;
import projectzombie.tiles.TileBulletBreakable;
@ -60,7 +62,7 @@ public class EntityBullet extends EntityParticle
}
public EntityBullet(Vec2d pos, Entity parent, double angle, double damage, int despawn_time) {
super(pos, 0.2, despawn_time);
super(pos);
// Store some specified values
this.angle = angle;
@ -182,18 +184,7 @@ public class EntityBullet extends EntityParticle
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Set the colour
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
GlHelpers.color3(1 * light.x, 0.8 * light.y, 0.3 * light.z);
// Set the height
this.setHeight(height);
// Call super
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
public Model getModel() {
return Models.PARTICLE_BULLET;
}
}

View File

@ -2,16 +2,17 @@ package projectzombie.entity;
import bdf.types.BdfObject;
import projectzombie.init.Models;
import projectzombie.model.Model;
import gl_engine.vec.Vec2d;
public class EntityDummy extends EntityVertical implements EntityAlive
public class EntityDummy extends Entity implements EntityAlive
{
public EntityDummy(BdfObject bdf) {
super(bdf, Models.ENTITY_DUMMY, new Vec2d(1, 1));
super(bdf);
}
public EntityDummy(Vec2d pos) {
super(pos, Models.ENTITY_DUMMY, new Vec2d(1, 1));
super(pos);
this.hitbox = 0.5;
this.isSolid = true;
@ -55,4 +56,9 @@ public class EntityDummy extends EntityVertical implements EntityAlive
return 5;
}
@Override
public Model getModel() {
return Models.ENTITY_DUMMY;
}
}

View File

@ -8,6 +8,7 @@ import projectzombie.entity.particle.ParticleBreak;
import projectzombie.entity.particle.ParticleSmoke;
import projectzombie.init.Sounds;
import projectzombie.init.Tiles;
import projectzombie.model.Model;
import projectzombie.util.gl.texture.IHasTexture;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState;
@ -132,4 +133,9 @@ public class EntityExplosion extends Entity
// Kill the explosion entity
kill();
}
@Override
public Model getModel() {
return null;
}
}

View File

@ -24,11 +24,6 @@ public class EntityFlare extends EntityTnt
this.explode_time = 1000;
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
super.render(pos, camera, Models.ENTITY_FLARE, size);
}
@Override
public double getLightLevel() {
return getLightWithHeight(1 - (this.height * (1/12.0))) * ( rand.nextDouble() / 10.0 + 0.9 );

View File

@ -6,20 +6,21 @@ import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
import projectzombie.world.layer.layergen.LayerGenRememberPlayerPos;
public class EntityGrapplingHook extends EntityVertical
public class EntityGrapplingHook extends Entity
{
private int layerId;
private double height;
private Entity entity;
public EntityGrapplingHook(BdfObject bdf) {
super(bdf, Models.ENTITY_GRAPPLING_HOOK, new Vec2d(1, 16));
super(bdf);
}
@Override
@ -41,7 +42,7 @@ public class EntityGrapplingHook extends EntityVertical
}
public EntityGrapplingHook(Vec2d pos, int layerId, Entity entity) {
super(pos, Models.ENTITY_GRAPPLING_HOOK, new Vec2d(1, 16));
super(pos);
this.layerId = layerId;
this.height = -16;
@ -104,11 +105,8 @@ public class EntityGrapplingHook extends EntityVertical
}
@Override
public void render(Vec2d pos, Camera camera) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera);
GlHelpers.popMatrix();
public Model getModel() {
return Models.ENTITY_GRAPPLING_HOOK;
}
}

View File

@ -4,6 +4,7 @@ import bdf.types.BdfNamedList;
import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.ItemStack;
@ -12,7 +13,7 @@ import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class EntityItem extends EntityVertical
public class EntityItem extends Entity
{
private ItemStack stack;
private double height = 0;
@ -23,7 +24,7 @@ public class EntityItem extends EntityVertical
public double angle;
public EntityItem(BdfObject bdf) {
super(bdf, TextureReference.EMPTY, new Vec2d(0.5, 0.5));
super(bdf);
}
@Override
@ -37,8 +38,6 @@ public class EntityItem extends EntityVertical
pickup_time = nl.get("pickup").getInteger();
age = nl.get("age").getLong();
angle = nl.get("angle").getDouble();
tex = stack.item.texture;
}
@Override
@ -55,10 +54,9 @@ public class EntityItem extends EntityVertical
}
public EntityItem(Vec2d pos, ItemStack stack) {
super(pos, stack.item.texture, new Vec2d(0.5, 0.5));
super(pos);
this.emitsLight = true;
this.opaqueTile = true;
this.stack = stack;
this.angle = RandomHelpers.randrange(rand, 360);
height_speed = RandomHelpers.randrange(rand, 10000) / 200000.0;
@ -135,10 +133,9 @@ public class EntityItem extends EntityVertical
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera, stack.item.texture, size);
GlHelpers.popMatrix();
public Model getModel() {
return Models.ITEM_NONE;
}
}

View File

@ -5,36 +5,22 @@ import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class EntityParticle extends Entity
public abstract class EntityParticle extends Entity
{
public static SettingQuality MODE = SettingQuality.FANCY;
private double height;
private double size;
protected TextureRef3D tex;
public EntityParticle(BdfObject bdf) {
super(bdf);
}
public EntityParticle(Vec2d pos, double size, double height) {
public EntityParticle(Vec2d pos) {
super(pos);
// Set some settings
this.opaqueTile = false;
this.height = height;
this.size = size;
}
public void setSize(double size) {
this.size = size;
}
public void setHeight(double height) {
this.height = height;
}
@Override
@ -44,38 +30,4 @@ public class EntityParticle extends Entity
// Kill the particle if the player can't see it to reduce lag
if(Main.player.pos.squareDistance(pos) > Camera.camera.renderDistance * 16) this.kill();
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Call super
super.render(pos, camera);
// Push the matrix, disable textures, colour, and translate the bullet
GlHelpers.pushMatrix();
GlHelpers.disableTexture2d();
// Get the angle between the camera and the bullet
double angle_r = camera.angle;
// Make the bullet upright
GlHelpers.translate3(size/2, 0, 0);
GlHelpers.translate3(pos.x, pos.y, height);
GlHelpers.rotate(-angle_r, 0, 0, 1);
GlHelpers.translate3(-size/2, 0, 0);
// Draw the bullet
GlHelpers.begin();
{
GlHelpers.vertex3(0.0f, 0, 0.0f);
GlHelpers.vertex3(size, 0, 0.0f);
GlHelpers.vertex3(size, 0, size);
GlHelpers.vertex3(0.0f, 0, size);
}
GlHelpers.end();
// Pop the matrix, remove the colour, and enable textures
GlHelpers.enableTexture2d();
GlHelpers.popMatrix();
}
}

View File

@ -5,6 +5,7 @@ import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.entity.particle.ParticleSpark;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
@ -12,7 +13,7 @@ import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class EntityTnt extends EntityVertical
public class EntityTnt extends Entity
{
protected double height = 0.4;
protected Vec3d velocity;
@ -21,7 +22,7 @@ public class EntityTnt extends EntityVertical
private double explode_damage;
public EntityTnt(BdfObject bdf) {
super(bdf, Models.ENTITY_TNT, new Vec2d(0.5, 0.5));
super(bdf);
}
@Override
@ -53,7 +54,7 @@ public class EntityTnt extends EntityVertical
}
public EntityTnt(Vec2d pos, double angle, int explode_radius, double explode_damage) {
super(pos, Models.ENTITY_TNT, new Vec2d(0.5, 0.5));
super(pos);
Vec2d v = MathHelpers.moveTowards2(0.05, Math.toRadians(angle));
velocity = new Vec3d(v.x, v.y, 0.01);
@ -112,17 +113,7 @@ public class EntityTnt extends EntityVertical
}
// Create sparks
chunk.spawnEntity(new ParticleSpark(pos.copy(), height));
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Render the tnt with the height
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera);
GlHelpers.popMatrix();
chunk.spawnEntity(new ParticleSpark(pos.copy()));
}
@Override
@ -134,4 +125,10 @@ public class EntityTnt extends EntityVertical
protected void moveAwayFromSolidEntities(Layer layer) {
}
@Override
public Model getModel() {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -1,58 +0,0 @@
package projectzombie.entity;
import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.entity.particle.ParticleBreak;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.VerticalRender;
import projectzombie.util.gl.texture.IHasTexture;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.MathHelpers;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import gl_engine.vec.Vec3d;
public class EntityVertical extends Entity implements IHasTexture
{
public TextureReference tex;
public Vec2d size;
public EntityVertical(BdfObject bdf, TextureReference tex, Vec2d size) {
super(bdf);
this.size = size;
this.tex = tex;
}
public EntityVertical(Vec2d pos, TextureReference tex, Vec2d size) {
super(pos);
this.size = size;
this.tex = tex;
}
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
super.render(pos, camera);
VerticalRender.render(new Vec2d(pos.x - 0.5, pos.y - 0.5), camera, tex, size);
}
@Override
public void render(Vec2d pos, Camera camera) {
this.render(pos, camera, 1);
}
public void render(Vec2d pos, Camera camera, double opacity) {
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
GlHelpers.color4(light.x, light.y, light.z, opacity);
this.render(pos, camera, tex, size);
GlHelpers.color4(1, 1, 1, 1);
}
@Override
public TextureReference getTexture() {
return tex;
}
public void killWithParticles() {
ParticleBreak.spawnParticles(chunk, pos, this);
}
}

View File

@ -6,6 +6,7 @@ import bdf.types.BdfNamedList;
import bdf.types.BdfObject;
import projectzombie.Main;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.astar.AStar;
import projectzombie.util.math.astar.AStarSearcher;
@ -15,7 +16,7 @@ import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class EntityZombie extends EntityVertical implements EntityAlive, EntityKillWithParticles
public class EntityZombie extends Entity implements EntityAlive, EntityKillWithParticles
{
protected OpenSimplexNoise noise_movement;
protected OpenSimplexNoise noise_gun_fire;
@ -36,10 +37,8 @@ public class EntityZombie extends EntityVertical implements EntityAlive, EntityK
private boolean can_see_player = false;
private int walking_for = 0;
private static final Vec2d size = new Vec2d(1, 1);
public EntityZombie(BdfObject bdf) {
super(bdf, Models.ENTITY_ZOMBIE_F, size);
super(bdf);
// Set some settings
hitbox = 0.5;
@ -84,7 +83,7 @@ public class EntityZombie extends EntityVertical implements EntityAlive, EntityK
}
public EntityZombie(Vec2d pos) {
super(pos, Models.ENTITY_ZOMBIE_F, size);
super(pos);
seed = rand.nextLong();
Random rand = new Random(seed);
@ -169,7 +168,7 @@ public class EntityZombie extends EntityVertical implements EntityAlive, EntityK
}
@Override
public TextureReference getTexture() {
public Model getModel() {
return Models.ENTITY_ZOMBIE_F;
}
@ -221,4 +220,10 @@ public class EntityZombie extends EntityVertical implements EntityAlive, EntityK
return 10;
}
@Override
public void killWithParticles() {
// TODO Auto-generated method stub
}
}

View File

@ -3,6 +3,7 @@ package projectzombie.entity;
import bdf.types.BdfObject;
import projectzombie.display.Camera;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d;
@ -21,14 +22,14 @@ public class EntityZombieArmored extends EntityZombie
this.crossUnWalkable = true;
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
super.render(pos, camera, Models.ENTITY_ZOMBIE_F_ARMORED, size);
}
@Override
public int bloodParticles() {
return 2;
}
@Override
public Model getModel() {
return Models.ENTITY_ZOMBIE_F_ARMORED;
}
}

View File

@ -4,6 +4,8 @@ import java.util.Random;
import projectzombie.display.Camera;
import projectzombie.entity.EntityParticle;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
@ -22,7 +24,7 @@ public class ParticleBlood extends EntityParticle
private Vec3d velocity;
public ParticleBlood(Random rand, Vec2d pos, double angle) {
super(pos, rand.nextDouble() / 5, 0);
super(pos);
angle += RandomHelpers.randrange(rand, -100, 100);
double angle_height = RandomHelpers.randrange(rand, 9000, 18000) / 100;
@ -64,20 +66,7 @@ public class ParticleBlood extends EntityParticle
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Get the light level
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
// Set some settings
GlHelpers.pushMatrix();
GlHelpers.color3(r_color * light.x, 0, 0);
GlHelpers.translate3(0, 0, height);
// Call super
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
public Model getModel() {
return Models.PARTICLE_BLOOD;
}
}

View File

@ -4,11 +4,11 @@ import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.entity.EntityParticle;
import projectzombie.entity.EntityVertical;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.tiles.TileVertical;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.AnimationReference;
import projectzombie.util.gl.texture.IHasTexture;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.MathHelpers;
@ -20,7 +20,7 @@ import gl_engine.vec.Vec3d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class ParticleBreak extends EntityVertical
public class ParticleBreak extends EntityParticle
{
private double height = 0;
private Vec3d velocity;
@ -35,13 +35,13 @@ public class ParticleBreak extends EntityVertical
int height = 1;
if(e instanceof EntityVertical) {
/*if(e instanceof EntityVertical) {
height = MathHelpers.floor(((EntityVertical)e).size.y);
}
for(int i=0;i<50 * height;i++) {
chunk.spawnEntity(new ParticleBreak(pos.copy(), e));
}
}*/
}
public static void spawnParticles(Chunk chunk, Vec2d pos, TileState s)
@ -61,16 +61,12 @@ public class ParticleBreak extends EntityVertical
}
}
private static TextureReference getTexture(TileState ts)
/*private static TextureReference getTexture(TileState ts)
{
if(ts.tile instanceof IHasTexture)
{
TextureReference tex = ((IHasTexture)ts.tile).getTexture();
if(tex instanceof AnimationReference) {
tex = ((AnimationReference)tex).c;
}
int px = RandomHelpers.randrange(rand, tex.start_x, tex.end_x - 2);
int py = RandomHelpers.randrange(rand, tex.start_y, tex.end_y - 2);
return tex.getTextureReference(px, px + 2, py, py + 2);
@ -87,10 +83,6 @@ public class ParticleBreak extends EntityVertical
{
TextureReference tex = ((IHasTexture)entity).getTexture();
if(tex instanceof AnimationReference) {
tex = ((AnimationReference)tex).c;
}
int px = RandomHelpers.randrange(rand, tex.start_x, tex.end_x - 2);
int py = RandomHelpers.randrange(rand, tex.start_y, tex.end_y - 2);
return tex.getTextureReference(px, px + 2, py, py + 2);
@ -99,17 +91,12 @@ public class ParticleBreak extends EntityVertical
else {
return TextureReference.EMPTY;
}
}
}*/
public ParticleBreak(Vec2d pos, TileState ts) {
super(pos, getTexture(ts), new Vec2d(1/8.0, 1/8.0));
double angle = RandomHelpers.randrange(rand, 360);
super(pos);
if(EntityParticle.MODE == SettingQuality.FANCY) {
this.opaqueTile = ts.tile.opaqueTile;
} else {
this.opaqueTile = false;
}
double angle = RandomHelpers.randrange(rand, 360);
if(ts.tile instanceof TileVertical) {
TileVertical ts_v = (TileVertical) ts.tile;
@ -126,27 +113,23 @@ public class ParticleBreak extends EntityVertical
}
public ParticleBreak(Vec2d pos, Entity entity) {
super(pos, getTexture(entity), new Vec2d(1/8.0, 1/8.0));
super(pos);
double angle = RandomHelpers.randrange(rand, 360);
if(EntityParticle.MODE == SettingQuality.FANCY) {
this.opaqueTile = entity.opaqueTile;
} else {
this.opaqueTile = false;
}
if(entity instanceof EntityVertical) {
EntityVertical entity_v = (EntityVertical) entity;
height = RandomHelpers.randrange(rand, 0, MathHelpers.floor(entity_v.size.y));
}
Vec2d side_v = MathHelpers.moveTowards2(0.01, Math.toRadians(angle));
velocity = new Vec3d(
side_v.x, side_v.y,
RandomHelpers.randrange(rand, 10000) / 200000.0);
time = RandomHelpers.randrange(rand, 500, 1500);
/*if(entity instanceof EntityVertical) {
EntityVertical entity_v = (EntityVertical) entity;
height = RandomHelpers.randrange(rand, 0, MathHelpers.floor(entity_v.size.y));
}
*/
}
@Override
@ -186,13 +169,9 @@ public class ParticleBreak extends EntityVertical
}
@Override
public void render(Vec2d pos, Camera camera, TextureReference tex, Vec2d size) {
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
GlHelpers.color3(light.x, light.y, light.z);
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera, tex, size);
GlHelpers.popMatrix();
public Model getModel() {
return Models.ENTITY_NONE;
}
}

View File

@ -4,6 +4,8 @@ import java.util.Random;
import projectzombie.display.Camera;
import projectzombie.entity.EntityParticle;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
@ -20,7 +22,7 @@ public class ParticleLava extends EntityParticle
private double height = 0;
public ParticleLava(Vec2d pos) {
super(pos, rand.nextDouble()/5, 0);
super(pos);
// Set the velocity
velocity = MathHelpers.moveTowards3(0.05, new Vec2d(Math.toRadians(
@ -48,11 +50,7 @@ public class ParticleLava extends EntityParticle
}
@Override
public void render(Vec2d pos, Camera camera) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
GlHelpers.color3(1, 0, 0);
super.render(pos, camera);
GlHelpers.popMatrix();
public Model getModel() {
return Models.PARTICLE_LAVA;
}
}

View File

@ -3,8 +3,8 @@ package projectzombie.entity.particle;
import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.EntityParticle;
import projectzombie.entity.EntityVertical;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.random.RandomHelpers;
@ -12,15 +12,17 @@ import gl_engine.vec.Vec2d;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class ParticleSmoke extends EntityVertical
public class ParticleSmoke extends EntityParticle
{
double height = 0;
double opacity = 1;
double height_speed;
double disappear_speed;
private Model model;
public ParticleSmoke(Vec2d pos) {
super(new Vec2d(0, 0), Models.PARTICLE_SMOKE_RANDOM.getTexture(), new Vec2d(1, 1));
super(pos);
this.pos = new Vec2d(
RandomHelpers.randrange(rand, 1000)/1000.0 - 0.5 + pos.x,
@ -28,16 +30,7 @@ public class ParticleSmoke extends EntityVertical
height_speed = (rand.nextDouble() + 0.5) / 250;
disappear_speed = (rand.nextDouble() + 0.5) / 1000;
this.opaqueTile = true;
}
@Override
public void render(Vec2d pos, Camera camera) {
if(opacity <= 0) return;
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
super.render(pos, camera, opacity);
GlHelpers.popMatrix();
model = Models.PARTICLE_SMOKE_RANDOM.getModel();
}
@Override
@ -56,4 +49,9 @@ public class ParticleSmoke extends EntityVertical
}
}
@Override
public Model getModel() {
return model;
}
}

View File

@ -2,6 +2,8 @@ package projectzombie.entity.particle;
import projectzombie.display.Camera;
import projectzombie.entity.EntityParticle;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.vec.Vec2d;
@ -12,9 +14,8 @@ public class ParticleSpark extends EntityParticle
{
private double size = 0.1;
public ParticleSpark(Vec2d pos, double height) {
super(pos, 1, height+0.4);
this.opaqueTile = false;
public ParticleSpark(Vec2d pos) {
super(pos);
}
@Override
@ -23,7 +24,6 @@ public class ParticleSpark extends EntityParticle
// Reduce the size
size -= 0.004;
setSize(size);
// Is the size zero
if(size <= 0)
@ -38,16 +38,8 @@ public class ParticleSpark extends EntityParticle
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Set some settings
GlHelpers.pushMatrix();
GlHelpers.color3(1, 1, 0);
// Call super
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
public Model getModel() {
return Models.PARTICLE_SMOKE_TRAIL;
}
}

View File

@ -2,6 +2,8 @@ package projectzombie.entity.particle;
import projectzombie.display.Camera;
import projectzombie.entity.EntityParticle;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.settings.SettingQuality;
import projectzombie.util.gl.GlHelpers;
import gl_engine.MathHelpers;
@ -18,7 +20,7 @@ public class ParticleWater extends EntityParticle
private double height = 0;
public ParticleWater(Vec2d pos) {
super(pos, rand.nextDouble()/5, 0);
super(pos);
// Set the velocity
velocity = MathHelpers.moveTowards3(0.05, new Vec2d(Math.toRadians(
@ -46,15 +48,8 @@ public class ParticleWater extends EntityParticle
}
@Override
public void render(Vec2d pos, Camera camera) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
GlHelpers.color3(light.x * 0.2, light.y * 0.2, light.z * 0.6);
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
public Model getModel() {
return Models.PARTICLE_WATER;
}
}

View File

@ -9,17 +9,18 @@ import bdf.types.BdfObject;
import mainloop.task.IMainloopTask;
import projectzombie.Main;
import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.entity.EntityAlive;
import projectzombie.entity.EntityBullet;
import projectzombie.entity.EntityHeight;
import projectzombie.entity.EntityInventory;
import projectzombie.entity.EntityItem;
import projectzombie.entity.EntityVertical;
import projectzombie.entity.particle.ParticleBreak;
import projectzombie.init.Items;
import projectzombie.init.Models;
import projectzombie.inventory.Inventory;
import projectzombie.menu.MenuDeath;
import projectzombie.model.Model;
import projectzombie.settings.Cheats;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
@ -33,7 +34,7 @@ import projectzombie.world.chunk.Chunk;
import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer;
public class EntityPlayer extends EntityVertical implements EntityAlive, EntityInventory, EntityHeight
public class EntityPlayer extends Entity implements EntityAlive, EntityInventory, EntityHeight
{
public boolean MOVE_FORWARD = false;
public boolean MOVE_BACKWARD = false;
@ -42,8 +43,8 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
public boolean GUN = false;
public boolean moving = false;
public TextureReference PLAYER_MOVING = Models.ENTITY_PLAYER_B_W_MOVING;
public TextureReference PLAYER_STILL = Models.ENTITY_PLAYER_B_W_STILL;
public Model PLAYER_MOVING = Models.ENTITY_PLAYER_B_W_MOVING;
public Model PLAYER_STILL = Models.ENTITY_PLAYER_B_W_STILL;
public double height = 0;
@ -67,7 +68,7 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
private static final Vec2d size = new Vec2d(1, 1);
public EntityPlayer(BdfObject bdf) {
super(bdf, TextureReference.EMPTY, size);
super(bdf);
}
@Override
@ -101,7 +102,7 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
}
public EntityPlayer() {
super(new Vec2d(0, 0), TextureReference.EMPTY, size);
super(new Vec2d(0, 0));
this.angle = 45;
@ -136,10 +137,7 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
return 0;
}
@Override
public TextureReference getTexture() {
return PLAYER_STILL;
}
@Override
public void tick(Chunk chunk, Layer layer)
@ -240,37 +238,6 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
this.moveTowards(angle, 0.08);
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Don't render if the player is dead
if(dead) return;
// Don't render if the chunk isnt loaded
if(!ChunkEventHandler.loaded) {
return;
}
// Translation
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, height);
// Set the colour due to the lighting
Vec3d light = chunk.getRGBLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
GlHelpers.color3(light.x, light.y, light.z);
// Moving
if(MOVE_BACKWARD || MOVE_FORWARD || moving)
super.render(pos, camera, PLAYER_MOVING, size);
// Standing still
else super.render(pos, camera, PLAYER_STILL, size);
// Pop the matrix
GlHelpers.popMatrix();
}
public void fireBullet(double angle)
{
if(dead || in_animation) return;
@ -374,4 +341,9 @@ public class EntityPlayer extends EntityVertical implements EntityAlive, EntityI
public void setHeight(double height) {
this.height = height;
}
@Override
public Model getModel() {
return moving ? PLAYER_MOVING : PLAYER_STILL;
}
}

View File

@ -5,229 +5,92 @@ import java.util.ArrayList;
import org.lwjgl.opengl.GL;
import projectzombie.display.DisplayWindow;
import projectzombie.util.gl.texture.AnimationReference;
import projectzombie.model.Model;
import projectzombie.model.ModelGui;
import projectzombie.model.ModelRandom;
import projectzombie.model.ModelTile;
import projectzombie.model.ModelVertical;
import projectzombie.util.gl.texture.TextureMap;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.gl.texture.TextureReferenceRandom;
public class Models
{
public static final TextureReference TILE_GRASS = texmap.getTextureReference(0, 1, 0, 1);
public static final TextureReference TILE_SAND = texmap.getTextureReference(1, 2, 0, 1);
public static final TextureReference TILE_STONE = texmap.getTextureReference(2, 3, 0, 1);
public static final TextureReference TILE_DIRT = texmap.getTextureReference(3, 4, 0, 1);
public static final TextureReference TILE_TREE = texmap.getTextureReference(4, 5, 0, 4);
public static final TextureReference TILE_ROCK = texmap.getTextureReference(4, 5, 4, 5);
public static final TextureReference ENTITY_TNT = texmap.getTextureReference(4, 5, 5, 6);
public static final TextureReference TILE_LADDER = texmap.getTextureReference(3, 4, 4, 5);
public static final TextureReference TILE_PORTAL = texmap.getTextureReference(3, 4, 5, 6);
public static final TextureReference TILE_WALL = texmap.getTextureReference(2, 3, 5, 6);
public static final TextureReference TILE_LADDER_UP = texmap.getTextureReference(16, 17, 0, 16);
public static final TextureReference TILE_CHEST = texmap.getTextureReference(2, 3, 4, 5);
public static final TextureReference ENTITY_FLARE = texmap.getTextureReference(6, 7, 15, 16);
public static final TextureReference ENTITY_DUMMY = texmap.getTextureReference(7, 8, 15, 16);
public static final TextureReference TILE_BOSS_PORTAL = texmap.getTextureReference(18, 20, 0, 2);
public static final TextureReference ITEM_GRAPPLING_HOOK = texmap.getTextureReference(18, 19, 2, 3);
public static final TextureReference ENTITY_GRAPPLING_HOOK = texmap.getTextureReference(17, 18, 0, 16);
public static final Model TILE_NONE = new ModelTile(Resources.ATLAS.get("NONE"));
public static final Model ENTITY_NONE = new ModelTile(Resources.ATLAS.get("NONE"));
public static final Model ITEM_NONE = new ModelTile(Resources.ATLAS.get("NONE"));
public static final TextureReference BUTTON = texmap.getTextureReference(18, 26, 8, 9);
public static final TextureReference BUTTON_HOVER = texmap.getTextureReference(18, 26, 9, 10);
public static final Model TILE_GRASS = new ModelTile(Resources.ATLAS.get("/tile/grass.png"));
public static final Model TILE_SAND = new ModelTile(Resources.ATLAS.get("/tile/sand.png"));
public static final Model TILE_STONE = new ModelTile(Resources.ATLAS.get("/tile/stone.png"));
public static final Model TILE_DIRT = new ModelTile(Resources.ATLAS.get("/tile/dirt.png"));
public static final Model TILE_TREE = new ModelVertical(Resources.ATLAS.get("/tile/tree.png"));
public static final Model TILE_ROCK = new ModelVertical(Resources.ATLAS.get("/tile/rock.png"));
public static final Model TILE_LADDER = new ModelVertical(Resources.ATLAS.get("/tile/ladder.png"));
public static final Model TILE_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/portal.png"));
public static final Model TILE_WALL = new ModelTile(Resources.ATLAS.get("/tile/wall.png"));
public static final Model TILE_LADDER_UP = new ModelVertical(Resources.ATLAS.get("/tile/ladder_up.png"));
public static final Model TILE_CHEST = new ModelVertical(Resources.ATLAS.get("/tile/chest.png"));
public static final Model TILE_BOSS_PORTAL = new ModelVertical(Resources.ATLAS.get("/tile/boss_portal.png"));
public static final Model TILE_WATER = new ModelTile(Resources.ATLAS.get("/tile/water.png"));
public static final Model TILE_LAVA = new ModelTile(Resources.ATLAS.get("/tile/lava.png"));
public static final Model TILE_LAVA_FLOW = new ModelTile(Resources.ATLAS.get("/tile/lava_flow.png"));
public static final AnimationReference ENTITY_BOSS_IDLE = new AnimationReference(50,
texmap.getTextureReference(20, 22, 0, 2),
texmap.getTextureReference(22, 24, 0, 2),
texmap.getTextureReference(24, 26, 0, 2),
texmap.getTextureReference(26, 28, 0, 2));
public static final Model ENTITY_BOSS_IDLE = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_idle.png"));
public static final Model ENTITY_BOSS_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_firing.png"), 4, 10);
public static final Model ENTITY_BOSS_WALKING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking.png"), 4, 10);
public static final Model ENTITY_BOSS_WALKING_AND_FIRING = new ModelVertical(Resources.ATLAS.get("/entity/boss1/boss_walking_firing.png"), 4, 10);
public static final Model ENTITY_TNT = new ModelVertical(Resources.ATLAS.get("/entity/tnt.png"));
public static final Model ENTITY_FLARE = new ModelVertical(Resources.ATLAS.get("/entity/flare.png"));
public static final Model ENTITY_DUMMY = new ModelVertical(Resources.ATLAS.get("/entity/dummy.png"));
public static final Model ENTITY_GRAPPLING_HOOK = new ModelVertical(Resources.ATLAS.get("/entity/grappling_hook.png"));
public static final AnimationReference ENTITY_BOSS_FIRING = new AnimationReference(50,
texmap.getTextureReference(20, 22, 2, 4),
texmap.getTextureReference(22, 24, 2, 4),
texmap.getTextureReference(24, 26, 2, 4),
texmap.getTextureReference(26, 28, 2, 4));
public static final Model TILE_LANTERN = new ModelVertical(Resources.ATLAS.get("/tile/lantern.png"), 4, 5);
public static final AnimationReference ENTITY_BOSS_WALKING = new AnimationReference(50,
texmap.getTextureReference(20, 22, 4, 6),
texmap.getTextureReference(22, 24, 4, 6),
texmap.getTextureReference(24, 26, 4, 6),
texmap.getTextureReference(26, 28, 4, 6));
public static final Model PARTICLE_BLOOD = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final Model PARTICLE_LAVA = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final Model PARTICLE_WATER = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final Model PARTICLE_SMOKE_TRAIL = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final Model PARTICLE_BULLET = new ModelVertical(Resources.ATLAS.get("/particle/blood.png"));
public static final AnimationReference ENTITY_BOSS_WALKING_AND_FIRING = new AnimationReference(50,
texmap.getTextureReference(20, 22, 6, 8),
texmap.getTextureReference(22, 24, 6, 8),
texmap.getTextureReference(24, 26, 6, 8),
texmap.getTextureReference(26, 28, 6, 8));
public static final ModelRandom PARTICLE_SMOKE_RANDOM = new ModelRandom(
new ModelVertical(Resources.ATLAS.get("/particle/smoke_0.png")),
new ModelVertical(Resources.ATLAS.get("/particle/smoke_1.png")),
new ModelVertical(Resources.ATLAS.get("/particle/smoke_2.png")),
new ModelVertical(Resources.ATLAS.get("/particle/smoke_3.png")),
new ModelVertical(Resources.ATLAS.get("/particle/smoke_4.png")),
new ModelVertical(Resources.ATLAS.get("/particle/smoke_5.png")));
public static final AnimationReference TILE_LANTERN = new AnimationReference(10,
texmap.getTextureReference(8, 9, 15, 16),
texmap.getTextureReference(9, 10, 15, 16),
texmap.getTextureReference(10, 11, 15, 16),
texmap.getTextureReference(11, 12, 15, 16),
texmap.getTextureReference(12, 13, 15, 16),
texmap.getTextureReference(13, 14, 15, 16));
public static final Model BUTTON = new ModelGui(Resources.ATLAS.get("/gui/button.png"));
public static final Model BUTTON_HOVER = new ModelGui(Resources.ATLAS.get("/tile/tree.png"));
public static final TextureReferenceRandom PARTICLE_SMOKE_RANDOM = new TextureReferenceRandom(
texmap.getTextureReference(14, 15, 13, 14), texmap.getTextureReference(15, 16, 13, 14),
texmap.getTextureReference(14, 15, 14, 15), texmap.getTextureReference(15, 16, 14, 15),
texmap.getTextureReference(14, 15, 15, 16), texmap.getTextureReference(15, 16, 15, 16));
public static final Model UI_HEALTH_FG = new ModelGui(Resources.ATLAS.get("/gui/health_full.png"));
public static final Model UI_HEALTH_BG = new ModelGui(Resources.ATLAS.get("/gui/health_empty.png"));
public static final Model UI_ITEM_SLOTS = new ModelGui(Resources.ATLAS.get("/gui/hotbar.png"));
public static final Model UI_ACTIVE_SLOT = new ModelGui(Resources.ATLAS.get("/gui/hotbar_selected.png"));
public static final TextureReference UI_HEALTH_FG = texmap.getTextureReference(0, 16, 11, 12);
public static final TextureReference UI_HEALTH_BG = texmap.getTextureReference(0, 16, 12, 13);
public static final TextureReference UI_ITEM_SLOTS = texmap.getTextureReference(0, 12, 13, 15);
public static final TextureReference UI_ACTIVE_SLOT = texmap.getTextureReference(12, 14, 13, 15);
public static final Model UI_DEFENCE_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/shield.png"));
public static final Model UI_GUN_LEVEL = new ModelGui(Resources.ATLAS.get("/gui/gun.png"));
public static final TextureReference UI_DEFENCE_LEVEL = texmap.getTextureReference(0, 1, 15, 16);
public static final TextureReference UI_GUN_LEVEL = texmap.getTextureReference(1, 2, 15, 16);
public static final TextureReference ITEM_HEALTH_POTION = texmap.getTextureReference(0, 1, 5, 6);
public static final TextureReference ITEM_AMMO_BOX = texmap.getTextureReference(1, 2, 5, 6);
public static final TextureReference ITEM_GUN_UPGRADE = texmap.getTextureReference(0, 1, 4, 5);
public static final TextureReference ITEM_DEFENCE_UPGRADE = texmap.getTextureReference(1, 2, 4, 5);
public static final TextureReference ITEM_ROCK = texmap.getTextureReference(0, 1, 3, 4);
public static final Model ITEM_GRAPPLING_HOOK = new ModelGui(Resources.ATLAS.get("/item/grappling_hook.png"));
public static final Model ITEM_HEALTH_POTION = new ModelGui(Resources.ATLAS.get("/item/health_potion.png"));
public static final Model ITEM_AMMO_BOX = new ModelGui(Resources.ATLAS.get("/item/ammo_box.png"));
public static final Model ITEM_GUN_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/gun_upgrade.png"));
public static final Model ITEM_DEFENCE_UPGRADE = new ModelGui(Resources.ATLAS.get("/item/shield_upgrade.png"));
public static final Model ITEM_ROCK = new ModelGui(Resources.ATLAS.get("/item/rock.png"));
// Player Back White Varient
public static final TextureReference ENTITY_PLAYER_B_W_STILL = texmap.getTextureReference(28, 29, 0, 1);
public static final TextureReference ENTITY_PLAYER_B_W_MOVING = new AnimationReference(10,
texmap.getTextureReference(28, 29, 0, 1),
texmap.getTextureReference(29, 30, 0, 1),
texmap.getTextureReference(30, 31, 0, 1),
texmap.getTextureReference(31, 32, 0, 1)
);
// Player Front White Varient
public static final TextureReference ENTITY_PLAYER_F_W_STILL = texmap.getTextureReference(28, 29, 1, 2);
public static final TextureReference ENTITY_PLAYER_F_W_MOVING = new AnimationReference(10,
texmap.getTextureReference(28, 29, 1, 2),
texmap.getTextureReference(29, 30, 1, 2),
texmap.getTextureReference(30, 31, 1, 2),
texmap.getTextureReference(31, 32, 1, 2)
);
// Player Back Black Varient
public static final TextureReference ENTITY_PLAYER_B_B_STILL = texmap.getTextureReference(28, 29, 2, 3);
public static final TextureReference ENTITY_PLAYER_B_B_MOVING = new AnimationReference(10,
texmap.getTextureReference(28, 29, 2, 3),
texmap.getTextureReference(29, 30, 2, 3),
texmap.getTextureReference(30, 31, 2, 3),
texmap.getTextureReference(31, 32, 2, 3)
);
// Player Front Black Varient
public static final TextureReference ENTITY_PLAYER_F_B_STILL = texmap.getTextureReference(28, 29, 3, 4);
public static final TextureReference ENTITY_PLAYER_F_B_MOVING = new AnimationReference(10,
texmap.getTextureReference(28, 29, 3, 4),
texmap.getTextureReference(29, 30, 3, 4),
texmap.getTextureReference(30, 31, 3, 4),
texmap.getTextureReference(31, 32, 3, 4)
);
// Zombie
public static final TextureReference ENTITY_ZOMBIE_B = new AnimationReference(10,
texmap.getTextureReference(28, 29, 4, 5),
texmap.getTextureReference(29, 30, 4, 5),
texmap.getTextureReference(30, 31, 4, 5),
texmap.getTextureReference(31, 32, 4, 5)
);
public static final TextureReference ENTITY_ZOMBIE_F = new AnimationReference(10,
texmap.getTextureReference(28, 29, 5, 6),
texmap.getTextureReference(29, 30, 5, 6),
texmap.getTextureReference(30, 31, 5, 6),
texmap.getTextureReference(31, 32, 5, 6)
);
// Zombie Bomber
public static final TextureReference ENTITY_ZOMBIE_B_ARMORED = new AnimationReference(10,
texmap.getTextureReference(28, 29, 6, 7),
texmap.getTextureReference(29, 30, 6, 7),
texmap.getTextureReference(30, 31, 6, 7),
texmap.getTextureReference(31, 32, 6, 7)
);
public static final TextureReference ENTITY_ZOMBIE_F_ARMORED = new AnimationReference(10,
texmap.getTextureReference(28, 29, 7, 8),
texmap.getTextureReference(29, 30, 7, 8),
texmap.getTextureReference(30, 31, 7, 8),
texmap.getTextureReference(31, 32, 7, 8)
);
// Water
public static final TextureReference TILE_WATER = new AnimationReference(10,
texmap.getTextureReference(0, 1, 8, 9),
texmap.getTextureReference(1, 2, 8, 9),
texmap.getTextureReference(2, 3, 8, 9),
texmap.getTextureReference(3, 4, 8, 9),
texmap.getTextureReference(4, 5, 8, 9),
texmap.getTextureReference(5, 6, 8, 9),
texmap.getTextureReference(6, 7, 8, 9),
texmap.getTextureReference(7, 8, 8, 9),
texmap.getTextureReference(8, 9, 8, 9),
texmap.getTextureReference(9, 10, 8, 9),
texmap.getTextureReference(10, 11, 8, 9),
texmap.getTextureReference(11, 12, 8, 9),
texmap.getTextureReference(12, 13, 8, 9),
texmap.getTextureReference(13, 14, 8, 9),
texmap.getTextureReference(14, 15, 8, 9),
texmap.getTextureReference(15, 16, 8, 9)
);
// Lava
public static final TextureReference TILE_LAVA = new AnimationReference(50,
texmap.getTextureReference(0, 1, 6, 7),
texmap.getTextureReference(1, 2, 6, 7),
texmap.getTextureReference(2, 3, 6, 7),
texmap.getTextureReference(3, 4, 6, 7),
texmap.getTextureReference(4, 5, 6, 7),
texmap.getTextureReference(5, 6, 6, 7),
texmap.getTextureReference(6, 7, 6, 7),
texmap.getTextureReference(7, 8, 6, 7),
texmap.getTextureReference(8, 9, 6, 7),
texmap.getTextureReference(9, 10, 6, 7),
texmap.getTextureReference(10, 11, 6, 7),
texmap.getTextureReference(11, 12, 6, 7),
texmap.getTextureReference(12, 13, 6, 7),
texmap.getTextureReference(13, 14, 6, 7),
texmap.getTextureReference(14, 15, 6, 7),
texmap.getTextureReference(15, 16, 6, 7)
);
// Water flow
public static final TextureReference TILE_WATER_FLOW = new AnimationReference(10,
texmap.getTextureReference(0, 1, 9, 10),
texmap.getTextureReference(1, 2, 9, 10),
texmap.getTextureReference(2, 3, 9, 10),
texmap.getTextureReference(3, 4, 9, 10),
texmap.getTextureReference(4, 5, 9, 10),
texmap.getTextureReference(5, 6, 9, 10),
texmap.getTextureReference(6, 7, 9, 10),
texmap.getTextureReference(7, 8, 9, 10),
texmap.getTextureReference(8, 9, 9, 10),
texmap.getTextureReference(9, 10, 9, 10),
texmap.getTextureReference(10, 11, 9, 10),
texmap.getTextureReference(11, 12, 9, 10),
texmap.getTextureReference(12, 13, 9, 10),
texmap.getTextureReference(13, 14, 9, 10),
texmap.getTextureReference(14, 15, 9, 10),
texmap.getTextureReference(15, 16, 9, 10)
);
// Lava flow
public static final TextureReference TILE_LAVA_FLOW = new AnimationReference(50,
texmap.getTextureReference(0, 1, 7, 8),
texmap.getTextureReference(1, 2, 7, 8),
texmap.getTextureReference(2, 3, 7, 8),
texmap.getTextureReference(3, 4, 7, 8),
texmap.getTextureReference(4, 5, 7, 8),
texmap.getTextureReference(5, 6, 7, 8),
texmap.getTextureReference(6, 7, 7, 8),
texmap.getTextureReference(7, 8, 7, 8),
texmap.getTextureReference(8, 9, 7, 8),
texmap.getTextureReference(9, 10, 7, 8),
texmap.getTextureReference(10, 11, 7, 8),
texmap.getTextureReference(11, 12, 7, 8),
texmap.getTextureReference(12, 13, 7, 8),
texmap.getTextureReference(13, 14, 7, 8),
texmap.getTextureReference(14, 15, 7, 8),
texmap.getTextureReference(15, 16, 7, 8)
);
public static final Model ENTITY_PLAYER_B_W_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_white_back_still.png"));
public static final Model ENTITY_PLAYER_B_W_MOVING = new ModelVertical(Resources.ATLAS.get("/player/player_white_back_moving.png"), 4, 10);
public static final Model ENTITY_PLAYER_F_W_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_white_front_still.png"));
public static final Model ENTITY_PLAYER_F_W_MOVING = new ModelVertical(Resources.ATLAS.get("/player/player_white_front_moving.png"), 4, 10);
public static final Model ENTITY_PLAYER_B_B_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_black_back_still.png"));
public static final Model ENTITY_PLAYER_B_B_MOVING = new ModelVertical(Resources.ATLAS.get("/player/player_black_back_moving.png"), 4, 10);
public static final Model ENTITY_PLAYER_F_B_STILL = new ModelVertical(Resources.ATLAS.get("/player/player_black_front_still.png"));
public static final Model ENTITY_PLAYER_F_B_MOVING = new ModelVertical(Resources.ATLAS.get("/player/player_blacl_front_moving.png"), 4, 10);
public static final Model ENTITY_ZOMBIE_B = new ModelVertical(Resources.ATLAS.get("/entity/zombie_back_moving.png"), 4, 10);
public static final Model ENTITY_ZOMBIE_F = new ModelVertical(Resources.ATLAS.get("/entity/zombie_front_moving.png"), 4, 10);
public static final Model ENTITY_ZOMBIE_B_ARMORED = new ModelVertical(Resources.ATLAS.get("/entity/armored_zombie_back_moving.png"), 4, 10);
public static final Model ENTITY_ZOMBIE_F_ARMORED = new ModelVertical(Resources.ATLAS.get("/entity/armored_zombie_front_moving.png"), 4, 10);
}

View File

@ -9,7 +9,7 @@ public abstract class Model
{
int vao, size;
boolean loaded = false;
private static final int SIZE = 7;
private static final int SIZE = 9;
public int getSize() {
return size;
@ -53,12 +53,9 @@ public abstract class Model
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, verticies, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, false, Float.BYTES * SIZE, 0);
glVertexAttribPointer(0, SIZE, GL_FLOAT, false, Float.BYTES * SIZE, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 4, GL_FLOAT, false, Float.BYTES * SIZE, Float.BYTES * 3);
glEnableVertexAttribArray(1);
loaded = true;
}
}

View File

@ -1,30 +0,0 @@
package projectzombie.model;
import gl_engine.texture.TextureRef3D;
public class ModelChar extends Model
{
private TextureRef3D ref;
public ModelChar(TextureRef3D ref) {
this.ref = ref;
}
@Override
protected float[] getVerticies() {
return new float[] {
0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 0,
1, 1, 0, 1, 1, 0, 0,
1, 1, 0, 1, 1, 0, 0,
0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
}
@Override
protected TextureRef3D[] getTextures() {
return new TextureRef3D[] {ref, ref};
}
}

View File

@ -0,0 +1,43 @@
package projectzombie.model;
import gl_engine.texture.TextureRef3D;
public class ModelGui extends Model
{
private int animationSize;
private int animationSpeed;
private TextureRef3D ref;
public ModelGui(TextureRef3D ref, int animationSize, int animationSpeed)
{
this.ref = ref;
this.animationSize = animationSize;
this.animationSpeed = animationSpeed;
}
public ModelGui(TextureRef3D ref) {
this.ref = ref;
}
@Override
protected float[] getVerticies()
{
int asi = animationSize;
int asp = animationSpeed;
return new float[] {
0, 0, 0, 0, 0, 0, asi, asp, 0,
1, 0, 0, 1, 0, 0, asi, asp, 0,
1, 1, 0, 1, 1, 0, asi, asp, 0,
1, 1, 0, 1, 1, 0, asi, asp, 0,
0, 1, 0, 0, 1, 0, asi, asp, 0,
0, 0, 0, 0, 0, 0, asi, asp, 0,
};
}
@Override
protected TextureRef3D[] getTextures() {
return new TextureRef3D[] {ref, ref};
}
}

View File

@ -0,0 +1,18 @@
package projectzombie.model;
import java.util.Random;
public class ModelRandom
{
private static final Random rand = new Random();
private Model[] models;
public ModelRandom(Model ...models) {
this.models = models;
}
public Model getModel() {
return models[(int)(rand.nextDouble() * models.length)];
}
}

View File

@ -1,26 +1,39 @@
package projectzombie.model;
import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
public abstract class ModelTile extends Model
public class ModelTile extends Model
{
private int animationSize;
private int animationSpeed;
private TextureRef3D tex;
public ModelTile(TextureRef3D tex) {
public ModelTile(TextureRef3D tex, int animationSize, int animationSpeed)
{
this.tex = tex;
this.animationSize = animationSize;
this.animationSpeed = animationSpeed;
}
public ModelTile(TextureRef3D tex) {
this(tex, 1, 1);
}
@Override
protected float[] getVerticies()
{
return new float[] {
1, 0, 1, 1, 1, 0, 0,
1, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
int asi = animationSize;
int asp = animationSpeed;
0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0, 0,
1, 0, 1, 1, 1, 0, 0,
return new float[] {
1, 0, 1, 1, 1, 0, asi, asp, 0,
1, 0, 0, 1, 0, 0, asi, asp, 0,
0, 0, 0, 0, 0, 0, asi, asp, 0,
0, 0, 0, 0, 0, 0, asi, asp, 0,
0, 0, 1, 0, 1, 0, asi, asp, 0,
1, 0, 1, 1, 1, 0, asi, asp, 0,
};
}

View File

@ -3,18 +3,32 @@ package projectzombie.model;
import gl_engine.texture.TextureRef3D;
import gl_engine.vec.Vec2d;
public abstract class ModelVertical extends Model
public class ModelVertical extends Model
{
private int animationSize;
private int animationSpeed;
private TextureRef3D tex;
private Vec2d size;
public ModelVertical(TextureRef3D tex, Vec2d size) {
public ModelVertical(TextureRef3D tex, Vec2d size, int animationSize, int animationSpeed)
{
this.tex = tex;
this.size = size;
this.animationSize = animationSize;
this.animationSpeed = animationSpeed;
}
public ModelVertical(TextureRef3D tex, int animationSize, int animationSpeed) {
this(tex, new Vec2d(1, 1), animationSize, animationSpeed);
}
public ModelVertical(TextureRef3D tex, Vec2d size) {
this(tex, size, 1, 1);
}
public ModelVertical(TextureRef3D tex) {
this(tex, new Vec2d(1, 1));
this(tex, new Vec2d(1, 1), 1, 1);
}
@Override
@ -23,14 +37,17 @@ public abstract class ModelVertical extends Model
float x = (float)size.x / 2;
float y = (float)size.y;
return new float[] {
0.5f-x, 0, 0.5f, 0, 0, 0, 1,
0.5f+x, 0, 0.5f, 1, 0, 0, 1,
0.5f+x, y, 0.5f, 1, 1, 0, 1,
int asi = animationSize;
int asp = animationSpeed;
0.5f+x, y, 0.5f, 1, 1, 0, 1,
0.5f-x, y, 0.5f, 0, 1, 0, 1,
0.5f-x, 0, 0.5f, 0, 0, 0, 1,
return new float[] {
0.5f-x, 0, 0.5f, 0, 0, 0, asi, asp, 1,
0.5f+x, 0, 0.5f, 1, 0, 0, asi, asp, 1,
0.5f+x, y, 0.5f, 1, 1, 0, asi, asp, 1,
0.5f+x, y, 0.5f, 1, 1, 0, asi, asp, 1,
0.5f-x, y, 0.5f, 0, 1, 0, asi, asp, 1,
0.5f-x, 0, 0.5f, 0, 0, 0, asi, asp, 1,
};
}

View File

@ -6,13 +6,15 @@ import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import gl_engine.ResourceLoader;
public class Resource
{
String path;
byte[] data;
private String filePath(String path) {
return "resources/"+path;
return "/resources/"+path;
}
public Resource(String path)
@ -21,25 +23,8 @@ public class Resource
this.path = path;
}
public void load()
{
try
{
// Open the file stored on the hard drive
InputStream file_stream = new FileInputStream(filePath(path));
data = new byte[file_stream.available()];
file_stream.read(data);
file_stream.close();
}
catch(IOException e)
{
// Print the stacktrace and exit
System.err.println("Error opening file at "+path+"!");
e.printStackTrace();
System.exit(1);
}
public void load() {
data = ResourceLoader.loadResource(path);
}
public byte[] getBytes() {

View File

@ -4,95 +4,95 @@ import projectzombie.Main;
import projectzombie.init.Models;
import projectzombie.init.Resources;
import projectzombie.model.Model;
import projectzombie.model.ModelChar;
import projectzombie.model.ModelGui;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.TextureReference;
import gl_engine.vec.Vec2d;
public class Text
{
public static final Model CHAR_A = new ModelChar(Resources.ATLAS.get("/char/char_u_a.png"));
public static final Model CHAR_B = new ModelChar(Resources.ATLAS.get("/char/char_u_b.png"));
public static final Model CHAR_C = new ModelChar(Resources.ATLAS.get("/char/char_u_c.png"));
public static final Model CHAR_D = new ModelChar(Resources.ATLAS.get("/char/char_u_d.png"));
public static final Model CHAR_E = new ModelChar(Resources.ATLAS.get("/char/char_u_e.png"));
public static final Model CHAR_F = new ModelChar(Resources.ATLAS.get("/char/char_u_f.png"));
public static final Model CHAR_G = new ModelChar(Resources.ATLAS.get("/char/char_u_g.png"));
public static final Model CHAR_H = new ModelChar(Resources.ATLAS.get("/char/char_u_h.png"));
public static final Model CHAR_I = new ModelChar(Resources.ATLAS.get("/char/char_u_i.png"));
public static final Model CHAR_J = new ModelChar(Resources.ATLAS.get("/char/char_u_j.png"));
public static final Model CHAR_K = new ModelChar(Resources.ATLAS.get("/char/char_u_k.png"));
public static final Model CHAR_L = new ModelChar(Resources.ATLAS.get("/char/char_u_l.png"));
public static final Model CHAR_M = new ModelChar(Resources.ATLAS.get("/char/char_u_m.png"));
public static final Model CHAR_N = new ModelChar(Resources.ATLAS.get("/char/char_u_n.png"));
public static final Model CHAR_O = new ModelChar(Resources.ATLAS.get("/char/char_u_o.png"));
public static final Model CHAR_P = new ModelChar(Resources.ATLAS.get("/char/char_u_p.png"));
public static final Model CHAR_Q = new ModelChar(Resources.ATLAS.get("/char/char_u_q.png"));
public static final Model CHAR_R = new ModelChar(Resources.ATLAS.get("/char/char_u_r.png"));
public static final Model CHAR_S = new ModelChar(Resources.ATLAS.get("/char/char_u_s.png"));
public static final Model CHAR_T = new ModelChar(Resources.ATLAS.get("/char/char_u_t.png"));
public static final Model CHAR_U = new ModelChar(Resources.ATLAS.get("/char/char_u_u.png"));
public static final Model CHAR_V = new ModelChar(Resources.ATLAS.get("/char/char_u_v.png"));
public static final Model CHAR_W = new ModelChar(Resources.ATLAS.get("/char/char_u_w.png"));
public static final Model CHAR_X = new ModelChar(Resources.ATLAS.get("/char/char_u_x.png"));
public static final Model CHAR_Y = new ModelChar(Resources.ATLAS.get("/char/char_u_y.png"));
public static final Model CHAR_Z = new ModelChar(Resources.ATLAS.get("/char/char_u_z.png"));
public static final Model CHAR_a = new ModelChar(Resources.ATLAS.get("/char/char_l_a.png"));
public static final Model CHAR_b = new ModelChar(Resources.ATLAS.get("/char/char_l_b.png"));
public static final Model CHAR_c = new ModelChar(Resources.ATLAS.get("/char/char_l_c.png"));
public static final Model CHAR_d = new ModelChar(Resources.ATLAS.get("/char/char_l_d.png"));
public static final Model CHAR_e = new ModelChar(Resources.ATLAS.get("/char/char_l_e.png"));
public static final Model CHAR_f = new ModelChar(Resources.ATLAS.get("/char/char_l_f.png"));
public static final Model CHAR_g = new ModelChar(Resources.ATLAS.get("/char/char_l_g.png"));
public static final Model CHAR_i = new ModelChar(Resources.ATLAS.get("/char/char_l_h.png"));
public static final Model CHAR_h = new ModelChar(Resources.ATLAS.get("/char/char_l_i.png"));
public static final Model CHAR_j = new ModelChar(Resources.ATLAS.get("/char/char_l_j.png"));
public static final Model CHAR_k = new ModelChar(Resources.ATLAS.get("/char/char_l_k.png"));
public static final Model CHAR_l = new ModelChar(Resources.ATLAS.get("/char/char_l_l.png"));
public static final Model CHAR_m = new ModelChar(Resources.ATLAS.get("/char/char_l_m.png"));
public static final Model CHAR_n = new ModelChar(Resources.ATLAS.get("/char/char_l_n.png"));
public static final Model CHAR_o = new ModelChar(Resources.ATLAS.get("/char/char_l_o.png"));
public static final Model CHAR_p = new ModelChar(Resources.ATLAS.get("/char/char_l_p.png"));
public static final Model CHAR_q = new ModelChar(Resources.ATLAS.get("/char/char_l_q.png"));
public static final Model CHAR_r = new ModelChar(Resources.ATLAS.get("/char/char_l_r.png"));
public static final Model CHAR_s = new ModelChar(Resources.ATLAS.get("/char/char_l_s.png"));
public static final Model CHAR_t = new ModelChar(Resources.ATLAS.get("/char/char_l_t.png"));
public static final Model CHAR_u = new ModelChar(Resources.ATLAS.get("/char/char_l_u.png"));
public static final Model CHAR_v = new ModelChar(Resources.ATLAS.get("/char/char_l_v.png"));
public static final Model CHAR_w = new ModelChar(Resources.ATLAS.get("/char/char_l_w.png"));
public static final Model CHAR_x = new ModelChar(Resources.ATLAS.get("/char/char_l_x.png"));
public static final Model CHAR_y = new ModelChar(Resources.ATLAS.get("/char/char_l_y.png"));
public static final Model CHAR_z = new ModelChar(Resources.ATLAS.get("/char/char_l_z.png"));
public static final Model CHAR_0 = new ModelChar(Resources.ATLAS.get("/char/char_0.png"));
public static final Model CHAR_1 = new ModelChar(Resources.ATLAS.get("/char/char_1.png"));
public static final Model CHAR_2 = new ModelChar(Resources.ATLAS.get("/char/char_2.png"));
public static final Model CHAR_3 = new ModelChar(Resources.ATLAS.get("/char/char_3.png"));
public static final Model CHAR_4 = new ModelChar(Resources.ATLAS.get("/char/char_4.png"));
public static final Model CHAR_5 = new ModelChar(Resources.ATLAS.get("/char/char_5.png"));
public static final Model CHAR_6 = new ModelChar(Resources.ATLAS.get("/char/char_6.png"));
public static final Model CHAR_7 = new ModelChar(Resources.ATLAS.get("/char/char_7.png"));
public static final Model CHAR_8 = new ModelChar(Resources.ATLAS.get("/char/char_8.png"));
public static final Model CHAR_9 = new ModelChar(Resources.ATLAS.get("/char/char_9.png"));
public static final Model CHAR_FULLSTOP = new ModelChar(Resources.ATLAS.get("/char/char_fullstop.png"));
public static final Model CHAR_COLON = new ModelChar(Resources.ATLAS.get("/char/char_colon.png"));
public static final Model CHAR_COMMA = new ModelChar(Resources.ATLAS.get("/char/char_comma.png"));
public static final Model CHAR_EXMARK = new ModelChar(Resources.ATLAS.get("/char/char_exclamation.png"));
public static final Model CHAR_MINUS = new ModelChar(Resources.ATLAS.get("/char/char_minus.png"));
public static final Model CHAR_PLUS = new ModelChar(Resources.ATLAS.get("/char/char_plus.png"));
public static final Model CHAR_F_SLASH = new ModelChar(Resources.ATLAS.get("/char/char_fslash.png"));
public static final Model CHAR_B_SLASH = new ModelChar(Resources.ATLAS.get("/char/char_bslash.png"));
public static final Model CHAR_EQUALS = new ModelChar(Resources.ATLAS.get("/char/char_equals.png"));
public static final Model CHAR_USCORE = new ModelChar(Resources.ATLAS.get("/char/char_underscore.png"));
public static final Model CHAR_NULL = new ModelChar(Resources.ATLAS.get("/char/char_unknown.png"));
public static final Model CHAR_BRACKET_O = new ModelChar(Resources.ATLAS.get("/char/char_obracket.png"));
public static final Model CHAR_BRACKET_C = new ModelChar(Resources.ATLAS.get("/char/char_cbracket.png"));
public static final Model CHAR_PERCENT = new ModelChar(Resources.ATLAS.get("/char/char_percent.png"));
public static final Model CHAR_VBAR = new ModelChar(Resources.ATLAS.get("/char/char_vertical.png"));
public static final Model CHAR_QMARK = new ModelChar(Resources.ATLAS.get("/char/char_question.png"));
public static final Model CHAR_DOLLAR = new ModelChar(Resources.ATLAS.get("/char/char_dollar.png"));
public static final Model CHAR_HASHTAG = new ModelChar(Resources.ATLAS.get("/char/char_hashtag.png"));
public static final Model CHAR_L_THAN = new ModelChar(Resources.ATLAS.get("/char/char_lthan.png"));
public static final Model CHAR_G_THAN = new ModelChar(Resources.ATLAS.get("/char/char_gthan.png"));
public static final Model CHAR_A = new ModelGui(Resources.ATLAS.get("/text/char_u_a.png"));
public static final Model CHAR_B = new ModelGui(Resources.ATLAS.get("/text/char_u_b.png"));
public static final Model CHAR_C = new ModelGui(Resources.ATLAS.get("/text/char_u_c.png"));
public static final Model CHAR_D = new ModelGui(Resources.ATLAS.get("/text/char_u_d.png"));
public static final Model CHAR_E = new ModelGui(Resources.ATLAS.get("/text/char_u_e.png"));
public static final Model CHAR_F = new ModelGui(Resources.ATLAS.get("/text/char_u_f.png"));
public static final Model CHAR_G = new ModelGui(Resources.ATLAS.get("/text/char_u_g.png"));
public static final Model CHAR_H = new ModelGui(Resources.ATLAS.get("/text/char_u_h.png"));
public static final Model CHAR_I = new ModelGui(Resources.ATLAS.get("/text/char_u_i.png"));
public static final Model CHAR_J = new ModelGui(Resources.ATLAS.get("/text/char_u_j.png"));
public static final Model CHAR_K = new ModelGui(Resources.ATLAS.get("/text/char_u_k.png"));
public static final Model CHAR_L = new ModelGui(Resources.ATLAS.get("/text/char_u_l.png"));
public static final Model CHAR_M = new ModelGui(Resources.ATLAS.get("/text/char_u_m.png"));
public static final Model CHAR_N = new ModelGui(Resources.ATLAS.get("/text/char_u_n.png"));
public static final Model CHAR_O = new ModelGui(Resources.ATLAS.get("/text/char_u_o.png"));
public static final Model CHAR_P = new ModelGui(Resources.ATLAS.get("/text/char_u_p.png"));
public static final Model CHAR_Q = new ModelGui(Resources.ATLAS.get("/text/char_u_q.png"));
public static final Model CHAR_R = new ModelGui(Resources.ATLAS.get("/text/char_u_r.png"));
public static final Model CHAR_S = new ModelGui(Resources.ATLAS.get("/text/char_u_s.png"));
public static final Model CHAR_T = new ModelGui(Resources.ATLAS.get("/text/char_u_t.png"));
public static final Model CHAR_U = new ModelGui(Resources.ATLAS.get("/text/char_u_u.png"));
public static final Model CHAR_V = new ModelGui(Resources.ATLAS.get("/text/char_u_v.png"));
public static final Model CHAR_W = new ModelGui(Resources.ATLAS.get("/text/char_u_w.png"));
public static final Model CHAR_X = new ModelGui(Resources.ATLAS.get("/text/char_u_x.png"));
public static final Model CHAR_Y = new ModelGui(Resources.ATLAS.get("/text/char_u_y.png"));
public static final Model CHAR_Z = new ModelGui(Resources.ATLAS.get("/text/char_u_z.png"));
public static final Model CHAR_a = new ModelGui(Resources.ATLAS.get("/text/char_l_a.png"));
public static final Model CHAR_b = new ModelGui(Resources.ATLAS.get("/text/char_l_b.png"));
public static final Model CHAR_c = new ModelGui(Resources.ATLAS.get("/text/char_l_c.png"));
public static final Model CHAR_d = new ModelGui(Resources.ATLAS.get("/text/char_l_d.png"));
public static final Model CHAR_e = new ModelGui(Resources.ATLAS.get("/text/char_l_e.png"));
public static final Model CHAR_f = new ModelGui(Resources.ATLAS.get("/text/char_l_f.png"));
public static final Model CHAR_g = new ModelGui(Resources.ATLAS.get("/text/char_l_g.png"));
public static final Model CHAR_i = new ModelGui(Resources.ATLAS.get("/text/char_l_h.png"));
public static final Model CHAR_h = new ModelGui(Resources.ATLAS.get("/text/char_l_i.png"));
public static final Model CHAR_j = new ModelGui(Resources.ATLAS.get("/text/char_l_j.png"));
public static final Model CHAR_k = new ModelGui(Resources.ATLAS.get("/text/char_l_k.png"));
public static final Model CHAR_l = new ModelGui(Resources.ATLAS.get("/text/char_l_l.png"));
public static final Model CHAR_m = new ModelGui(Resources.ATLAS.get("/text/char_l_m.png"));
public static final Model CHAR_n = new ModelGui(Resources.ATLAS.get("/text/char_l_n.png"));
public static final Model CHAR_o = new ModelGui(Resources.ATLAS.get("/text/char_l_o.png"));
public static final Model CHAR_p = new ModelGui(Resources.ATLAS.get("/text/char_l_p.png"));
public static final Model CHAR_q = new ModelGui(Resources.ATLAS.get("/text/char_l_q.png"));
public static final Model CHAR_r = new ModelGui(Resources.ATLAS.get("/text/char_l_r.png"));
public static final Model CHAR_s = new ModelGui(Resources.ATLAS.get("/text/char_l_s.png"));
public static final Model CHAR_t = new ModelGui(Resources.ATLAS.get("/text/char_l_t.png"));
public static final Model CHAR_u = new ModelGui(Resources.ATLAS.get("/text/char_l_u.png"));
public static final Model CHAR_v = new ModelGui(Resources.ATLAS.get("/text/char_l_v.png"));
public static final Model CHAR_w = new ModelGui(Resources.ATLAS.get("/text/char_l_w.png"));
public static final Model CHAR_x = new ModelGui(Resources.ATLAS.get("/text/char_l_x.png"));
public static final Model CHAR_y = new ModelGui(Resources.ATLAS.get("/text/char_l_y.png"));
public static final Model CHAR_z = new ModelGui(Resources.ATLAS.get("/text/char_l_z.png"));
public static final Model CHAR_0 = new ModelGui(Resources.ATLAS.get("/text/char_0.png"));
public static final Model CHAR_1 = new ModelGui(Resources.ATLAS.get("/text/char_1.png"));
public static final Model CHAR_2 = new ModelGui(Resources.ATLAS.get("/text/char_2.png"));
public static final Model CHAR_3 = new ModelGui(Resources.ATLAS.get("/text/char_3.png"));
public static final Model CHAR_4 = new ModelGui(Resources.ATLAS.get("/text/char_4.png"));
public static final Model CHAR_5 = new ModelGui(Resources.ATLAS.get("/text/char_5.png"));
public static final Model CHAR_6 = new ModelGui(Resources.ATLAS.get("/text/char_6.png"));
public static final Model CHAR_7 = new ModelGui(Resources.ATLAS.get("/text/char_7.png"));
public static final Model CHAR_8 = new ModelGui(Resources.ATLAS.get("/text/char_8.png"));
public static final Model CHAR_9 = new ModelGui(Resources.ATLAS.get("/text/char_9.png"));
public static final Model CHAR_FULLSTOP = new ModelGui(Resources.ATLAS.get("/text/char_fullstop.png"));
public static final Model CHAR_COLON = new ModelGui(Resources.ATLAS.get("/text/char_colon.png"));
public static final Model CHAR_COMMA = new ModelGui(Resources.ATLAS.get("/text/char_comma.png"));
public static final Model CHAR_EXMARK = new ModelGui(Resources.ATLAS.get("/text/char_exclamation.png"));
public static final Model CHAR_MINUS = new ModelGui(Resources.ATLAS.get("/text/char_minus.png"));
public static final Model CHAR_PLUS = new ModelGui(Resources.ATLAS.get("/text/char_plus.png"));
public static final Model CHAR_F_SLASH = new ModelGui(Resources.ATLAS.get("/text/char_fslash.png"));
public static final Model CHAR_B_SLASH = new ModelGui(Resources.ATLAS.get("/text/char_bslash.png"));
public static final Model CHAR_EQUALS = new ModelGui(Resources.ATLAS.get("/text/char_equals.png"));
public static final Model CHAR_USCORE = new ModelGui(Resources.ATLAS.get("/text/char_underscore.png"));
public static final Model CHAR_NULL = new ModelGui(Resources.ATLAS.get("/text/char_unknown.png"));
public static final Model CHAR_BRACKET_O = new ModelGui(Resources.ATLAS.get("/text/char_obracket.png"));
public static final Model CHAR_BRACKET_C = new ModelGui(Resources.ATLAS.get("/text/char_cbracket.png"));
public static final Model CHAR_PERCENT = new ModelGui(Resources.ATLAS.get("/text/char_percent.png"));
public static final Model CHAR_VBAR = new ModelGui(Resources.ATLAS.get("/text/char_vertical.png"));
public static final Model CHAR_QMARK = new ModelGui(Resources.ATLAS.get("/text/char_question.png"));
public static final Model CHAR_DOLLAR = new ModelGui(Resources.ATLAS.get("/text/char_dollar.png"));
public static final Model CHAR_HASHTAG = new ModelGui(Resources.ATLAS.get("/text/char_hashtag.png"));
public static final Model CHAR_L_THAN = new ModelGui(Resources.ATLAS.get("/text/char_lthan.png"));
public static final Model CHAR_G_THAN = new ModelGui(Resources.ATLAS.get("/text/char_gthan.png"));
public static void renderCenter(String text, Vec2d size) {
int w = Main.window.getWidth();
@ -203,7 +203,7 @@ public class Text
case('<'): l = CHAR_L_THAN; break;
}
l.bind();
}
// Stop drawing quads

View File

@ -2,16 +2,16 @@ package projectzombie.tiles;
import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.model.Model;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class Tile
public abstract class Tile
{
public short id;
public boolean opaqueTile = false;
public boolean tileSolid = false;
public boolean tileWalkable = true;
public double tileHitbox = 0;
@ -21,24 +21,9 @@ public class Tile
public boolean emitsLight = false;
public boolean passNaturalLight = true;
public void render(Vec2d pos, Camera camera, TileState state) {
}
public void doRender(Vec2d pos, Camera camera, TileState state) {
this.render(pos, camera, state);
}
public boolean isOpaqueTile() {
return this.opaqueTile;
}
public void onWalkedOn(Chunk chunk, Layer layer, Vec2i pos, Entity entity, TileState state) {
}
public Vec2d getRenderOffset(TileState ts) {
return new Vec2d(0.5, 0.5);
}
public TileState getDefaultState() {
return new TileState(this, 0);
}
@ -57,4 +42,6 @@ public class Tile
public void tickRandomly(Layer layer, Chunk chunk, TileState state, Vec2i pos) {
}
public abstract Model getModel(byte meta);
}

View File

@ -9,6 +9,7 @@ import projectzombie.entity.particle.ParticleBreak;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.LayerGenerators;
import projectzombie.init.Models;
import projectzombie.model.Model;
import gl_engine.MathHelpers;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
@ -17,15 +18,13 @@ import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer;
import projectzombie.world.layer.layergen.LayerGenBossArena;
public class TileBossPortal extends TileVertical
public class TileBossPortal extends Tile
{
private static Random rand = new Random();
public TileBossPortal() {
super(Models.TILE_BOSS_PORTAL, new Vec2d(2, 2));
this.emitsLight = true;
this.opaqueTile = true;
this.tileHitbox = 0.4;
this.tileSolid = true;
this.unbreakable = true;
@ -50,7 +49,7 @@ public class TileBossPortal extends TileVertical
LayerGenBossArena layergen = (LayerGenBossArena) LayerGenerators.BOSS_ARENA;
layergen.spawnPlayer(ep);
layer.setFrontTile(TileState.EMPTY, tpos);
ParticleBreak.spawnParticles(layer.getChunk(tpos), size, state);
ParticleBreak.spawnParticles(layer.getChunk(tpos), new Vec2d(1, 1), state);
int id = Main.world.addLayer(new Layer(rand, layergen));
Main.world.setLayer(id);
@ -94,4 +93,9 @@ public class TileBossPortal extends TileVertical
}
}
@Override
public Model getModel(byte meta) {
return Models.TILE_BOSS_PORTAL;
}
}

View File

@ -7,6 +7,7 @@ import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem;
import projectzombie.init.Items;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers;
@ -15,16 +16,14 @@ import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class TileChest extends TileVertical implements TileBulletBreakable
public class TileChest extends Tile implements TileBulletBreakable
{
public static final short CHEST_CAVES = 1;
public static final short CHEST_LAVA_CAVES = 2;
public TileChest() {
super(Models.TILE_CHEST, new Vec2d(1, 1));
this.tileSolid = true;
this.opaqueTile = true;
this.tileHitbox = 0.4;
}
@ -116,4 +115,9 @@ public class TileChest extends TileVertical implements TileBulletBreakable
return 25;
}
@Override
public Model getModel(byte meta) {
return Models.TILE_CHEST;
}
}

View File

@ -1,12 +1,14 @@
package projectzombie.tiles;
import projectzombie.init.Models;
import projectzombie.model.Model;
public class TileDirt extends TileFlatFaded
public class TileDirt extends Tile
{
public TileDirt() {
super(Models.TILE_DIRT);
@Override
public Model getModel(byte meta) {
return Models.TILE_DIRT;
}
}

View File

@ -1,45 +0,0 @@
package projectzombie.tiles;
import projectzombie.display.Camera;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.texture.IHasTexture;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
public class TileFlat extends Tile implements IHasTexture
{
private TextureReference tex;
protected boolean rotates = false;
private static final Vec3d default_tile_color = new Vec3d(1, 1, 1);
public TileFlat(TextureReference tex) {
this.tex = tex;
}
public void render(Vec2d pos, Camera camera, TileState state, Vec3d color)
{
// Call super
super.render(pos, camera, state);
// Render the tile
GlHelpers.color3(state.light.x * color.x, state.light.y * color.y, state.light.z * color.z);
GlHelpers.begin();
tex.texCoord(1, 1); GlHelpers.vertex3(pos.x+0, pos.y+0, 0);
tex.texCoord(0, 1); GlHelpers.vertex3(pos.x+1, pos.y+0, 0);
tex.texCoord(0, 0); GlHelpers.vertex3(pos.x+1, pos.y+1, 0);
tex.texCoord(1, 0); GlHelpers.vertex3(pos.x+0, pos.y+1, 0);
GlHelpers.end();
}
@Override
public void render(Vec2d pos, Camera camera, TileState state) {
this.render(pos, camera, state, default_tile_color);
}
@Override
public TextureReference getTexture() {
return tex;
}
}

View File

@ -1,22 +0,0 @@
package projectzombie.tiles;
import projectzombie.display.Camera;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec3d;
public class TileFlatFaded extends TileFlat
{
public TileFlatFaded(TextureReference tex) {
super(tex);
}
@Override
public void render(Vec2d pos, Camera camera, TileState state) {
double fade_amount = (Byte.MAX_VALUE - (double)state.meta) / Byte.MAX_VALUE;
super.render(pos, camera, state, new Vec3d(fade_amount, fade_amount, fade_amount));
}
}

View File

@ -1,12 +1,14 @@
package projectzombie.tiles;
import projectzombie.init.Models;
import projectzombie.model.Model;
public class TileGrass extends TileFlat
public class TileGrass extends Tile
{
public TileGrass() {
super(Models.TILE_GRASS);
@Override
public Model getModel(byte meta) {
return Models.TILE_GRASS;
}
}

View File

@ -1,17 +1,16 @@
package projectzombie.tiles;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
public class TileLadder extends TileVertical
public class TileLadder extends Tile
{
public TileLadder() {
super(Models.TILE_LADDER, new Vec2d(1, 1));
this.opaqueTile = true;
this.tileSolid = true;
this.tileHitbox = 0.3;
this.unbreakable = true;
@ -24,4 +23,9 @@ public class TileLadder extends TileVertical
return 0.5;
}
@Override
public Model getModel(byte meta) {
return Models.TILE_LADDER;
}
}

View File

@ -6,18 +6,17 @@ import projectzombie.entity.Entity;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.model.Model;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer;
public class TileLadderUp extends TileVertical
public class TileLadderUp extends Tile
{
public TileLadderUp() {
super(Models.TILE_LADDER_UP, new Vec2d(1, 16));
this.opaqueTile = true;
this.tileSolid = true;
this.tileHitbox = 0.3;
this.unbreakable = true;
@ -95,4 +94,9 @@ public class TileLadderUp extends TileVertical
}
}
@Override
public Model getModel(byte meta) {
return Models.TILE_LADDER_UP;
}
}

View File

@ -4,20 +4,19 @@ import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem;
import projectzombie.init.Items;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.layer.Layer;
public class TileLantern extends TileVertical
public class TileLantern extends Tile
{
public TileLantern() {
super(Models.TILE_LANTERN, new Vec2d(1, 1));
this.emitsLight = true;
this.opaqueTile = true;
}
@Override
@ -34,6 +33,9 @@ public class TileLantern extends TileVertical
new ItemStack(Items.LANTERN, 1, (byte)0)));
}
@Override
public Model getModel(byte meta) {
return Models.TILE_LANTERN;
}
}

View File

@ -6,6 +6,7 @@ import projectzombie.display.Camera;
import projectzombie.entity.Entity;
import projectzombie.entity.particle.ParticleLava;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
@ -13,12 +14,11 @@ import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class TileLava extends TileFlat
public class TileLava extends Tile
{
private Random rand = new Random();
public TileLava() {
super(Models.TILE_LAVA);
this.slowness = 0.5;
this.tileWalkable = false;
@ -27,11 +27,8 @@ public class TileLava extends TileFlat
}
@Override
public void render(Vec2d pos, Camera camera, TileState state) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, 0.001);
super.render(pos, camera, state);
GlHelpers.popMatrix();
public Model getModel(byte meta) {
return Models.TILE_LAVA;
}
@Override

View File

@ -5,6 +5,7 @@ import java.util.Random;
import projectzombie.display.Camera;
import projectzombie.entity.particle.ParticleSmoke;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.math.TileState;
import projectzombie.util.math.random.RandomHelpers;
@ -13,25 +14,16 @@ import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.Chunk;
import projectzombie.world.layer.Layer;
public class TileLavaFlow extends TileFlat
public class TileLavaFlow extends Tile
{
private Random rand = new Random();
public TileLavaFlow() {
super(Models.TILE_LAVA_FLOW);
this.emitsLight = true;
this.unbreakable = true;
}
@Override
public void render(Vec2d pos, Camera camera, TileState state) {
GlHelpers.pushMatrix();
GlHelpers.translate3(0, 0, 0.001);
super.render(pos, camera, state);
GlHelpers.popMatrix();
}
@Override
public double getLightLevel(TileState state, Vec2i pos) {
return 0.6;
@ -47,4 +39,9 @@ public class TileLavaFlow extends TileFlat
}
}
@Override
public Model getModel(byte meta) {
return Models.TILE_LAVA_FLOW;
}
}

View File

@ -6,16 +6,16 @@ import projectzombie.entity.Entity;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.mainloop.MainloopEventHandler;
import projectzombie.model.Model;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2i;
import projectzombie.world.chunk.ChunkEventHandler;
import projectzombie.world.layer.Layer;
public class TilePortalDown extends TileFlat
public class TilePortalDown extends Tile
{
public TilePortalDown() {
super(Models.TILE_PORTAL);
this.unbreakable = true;
}
@ -126,4 +126,9 @@ public class TilePortalDown extends TileFlat
}
}
@Override
public Model getModel(byte meta) {
return Models.TILE_PORTAL;
}
}

View File

@ -4,20 +4,19 @@ import projectzombie.entity.Entity;
import projectzombie.entity.EntityItem;
import projectzombie.init.Items;
import projectzombie.init.Models;
import projectzombie.model.Model;
import projectzombie.util.math.ItemStack;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
import gl_engine.vec.Vec2i;
import projectzombie.world.layer.Layer;
public class TileRock extends TileVertical implements TileBulletBreakable
public class TileRock extends Tile implements TileBulletBreakable
{
public TileRock() {
super(Models.TILE_ROCK, new Vec2d(1, 1));
// Set some settings
this.opaqueTile = true;
this.tileSolid = true;
this.tileHitbox = 0.4;
}
@ -40,4 +39,9 @@ public class TileRock extends TileVertical implements TileBulletBreakable
return 15;
}
@Override
public Model getModel(byte meta) {
return Models.TILE_ROCK;
}
}

View File

@ -1,35 +0,0 @@
package projectzombie.tiles;
import projectzombie.display.Camera;
import projectzombie.util.gl.GlHelpers;
import projectzombie.util.gl.VerticalRender;
import projectzombie.util.gl.texture.IHasTexture;
import projectzombie.util.gl.texture.TextureReference;
import projectzombie.util.math.TileState;
import gl_engine.vec.Vec2d;
public class TileVertical extends Tile implements IHasTexture
{
public final TextureReference tex;
public final Vec2d size;
public TileVertical(TextureReference tex, Vec2d size) {
// Store some variables
this.tex = tex;
this.size = size;
}
@Override
public void render(Vec2d pos, Camera camera, TileState state) {
super.render(pos, camera, state);
GlHelpers.color3(state.light.x, state.light.y, state.light.z);
VerticalRender.render(pos, camera, tex, size);
}
@Override
public TextureReference getTexture() {
return tex;
}
}

View File

@ -0,0 +1,15 @@
#version 330
in vec3 pTexture;
out vec4 color;
uniform sampler3D tex;
void main()
{
color = texture(tex, pTexture);
if(color.a == 0) {
discard;
}
}

View File

@ -0,0 +1,46 @@
#version 330
layout (location = 0) in float[9] vertices;
out vec3 pTexture;
uniform mat4 projection;
uniform mat4 model;
uniform mat4 camera;
uniform float cameraAngle;
mat4 rotate(float angle, float x, float y, float z)
{
mat4 result = mat4(1);
float csin = sin(angle);
float ccos = cos(angle);
float iccos = 1 - ccos;
result[0][0] = ccos + x * x * iccos;
result[0][1] = x * y * iccos - z * csin;
result[0][2] = x * z * iccos + y * csin;
result[1][0] = y * x * iccos + z * csin;
result[1][1] = ccos + y * y * iccos;
result[1][2] = y * z * iccos - x * csin;
result[2][0] = z * x * iccos - y * csin;
result[2][1] = z * y * iccos + x * csin;
result[2][2] = ccos + z * z * iccos;
result[3][3] = 1;
return result;
}
void main()
{
int type = int(vertices[8]);
mat4 do_rotation = rotate(cameraAngle, 0, 1, 0);
mat4 no_rotation = mat4(1);
gl_Position = vec4(vertices[0], vertices[1], vertices[2], 1) *
(type == 1 ? do_rotation : no_rotation) * model * camera * projection;
pTexture = vec3(vertices[3], vertices[4], vertices[5]);
}

View File

@ -0,0 +1,10 @@
#version 330
in vec3 pTexture;
out vec4 color;
uniform sampler3D tex;
void main() {
color = texture(tex, pTexture);
}

View File

@ -0,0 +1,13 @@
#version 330
layout (location = 0) in float[9] vertices;
out vec3 pTexture;
uniform mat4 model;
void main()
{
gl_Position = vec4(vertices[0], vertices[1], vertices[2], 0, 1);
pTexture = vec3(vertices[3], vertices[4], vertices[5]);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More