Minor refactor
This commit is contained in:
parent
aa88fcd7f9
commit
be980b2aa6
@ -22,12 +22,15 @@ void main(){
|
|||||||
vec2 pos2d = (u_model * vec4(v_position, 1.0)).xz-u_cameraPos.xz;
|
vec2 pos2d = (u_model * vec4(v_position, 1.0)).xz-u_cameraPos.xz;
|
||||||
vec4 modelpos = u_model * vec4(v_position+vec3(0,pow(length(pos2d)*0.0, 3.0),0), 1.0);
|
vec4 modelpos = u_model * vec4(v_position+vec3(0,pow(length(pos2d)*0.0, 3.0),0), 1.0);
|
||||||
vec4 viewmodelpos = u_view * modelpos;
|
vec4 viewmodelpos = u_view * modelpos;
|
||||||
vec3 light = v_light.rgb;
|
vec3 light = v_light.rgb * 1.6;
|
||||||
float torchlight = max(0.0, 1.0-distance(u_cameraPos, modelpos.xyz)/u_torchlightDistance);
|
float torchlight = max(0.0, 1.0-distance(u_cameraPos, modelpos.xyz)/u_torchlightDistance);
|
||||||
light += torchlight * u_torchlightColor;
|
light += torchlight * u_torchlightColor;
|
||||||
a_color = vec4(pow(light, vec3(u_gamma)),1.0f);
|
a_color = vec4(pow(light, vec3(u_gamma)),1.0f);
|
||||||
a_texCoord = v_texCoord;
|
a_texCoord = v_texCoord;
|
||||||
a_color.rgb += u_skyLightColor * v_light.a;
|
a_color.rgb += u_skyLightColor * v_light.a;
|
||||||
|
a_color.r = min(a_color.r, 1.1);
|
||||||
|
a_color.g = min(a_color.g, 1.1);
|
||||||
|
a_color.b = min(a_color.b, 1.1);
|
||||||
a_distance = length(viewmodelpos);
|
a_distance = length(viewmodelpos);
|
||||||
gl_Position = u_proj * viewmodelpos;
|
gl_Position = u_proj * viewmodelpos;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ void setup_definitions() {
|
|||||||
block->skyLightPassing = true;
|
block->skyLightPassing = true;
|
||||||
block->obstacle = false;
|
block->obstacle = false;
|
||||||
block->selectable = false;
|
block->selectable = false;
|
||||||
block->model = 0;
|
block->model = BlockModel::none;
|
||||||
Block::blocks[block->id] = block;
|
Block::blocks[block->id] = block;
|
||||||
|
|
||||||
block = new Block(BLOCK_DIRT, 2);
|
block = new Block(BLOCK_DIRT, 2);
|
||||||
@ -71,7 +71,7 @@ void setup_definitions() {
|
|||||||
block->drawGroup = 5;
|
block->drawGroup = 5;
|
||||||
block->lightPassing = true;
|
block->lightPassing = true;
|
||||||
block->obstacle = false;
|
block->obstacle = false;
|
||||||
block->model = 2;
|
block->model = BlockModel::xsprite;
|
||||||
block->hitboxScale = 0.5f;
|
block->hitboxScale = 0.5f;
|
||||||
Block::blocks[block->id] = block;
|
Block::blocks[block->id] = block;
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ void setup_definitions() {
|
|||||||
block->drawGroup = 5;
|
block->drawGroup = 5;
|
||||||
block->lightPassing = true;
|
block->lightPassing = true;
|
||||||
block->obstacle = false;
|
block->obstacle = false;
|
||||||
block->model = 2;
|
block->model = BlockModel::xsprite;
|
||||||
Block::blocks[block->id] = block;
|
Block::blocks[block->id] = block;
|
||||||
|
|
||||||
block = new Block(BLOCK_BRICK, 17);
|
block = new Block(BLOCK_BRICK, 17);
|
||||||
|
|||||||
@ -206,9 +206,9 @@ void HudRenderer::drawInventory(Player* player) {
|
|||||||
tint = vec4(1.0f);
|
tint = vec4(1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cblock->model == BLOCK_MODEL_CUBE){
|
if (cblock->model == BlockModel::block){
|
||||||
batch->blockSprite(x, y, size, size, 16, cblock->textureFaces, tint);
|
batch->blockSprite(x, y, size, size, 16, cblock->textureFaces, tint);
|
||||||
} else if (cblock->model == BLOCK_MODEL_X_SPRITE){
|
} else if (cblock->model == BlockModel::xsprite){
|
||||||
batch->sprite(x, y, size, size, 16, cblock->textureFaces[3], tint);
|
batch->sprite(x, y, size, size, 16, cblock->textureFaces[3], tint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -265,9 +265,9 @@ void HudRenderer::draw(){
|
|||||||
|
|
||||||
{
|
{
|
||||||
Block* cblock = Block::blocks[player->choosenBlock];
|
Block* cblock = Block::blocks[player->choosenBlock];
|
||||||
if (cblock->model == BLOCK_MODEL_CUBE){
|
if (cblock->model == BlockModel::block){
|
||||||
batch->blockSprite(Window::width/2-24, uicamera->fov - 72, 48, 48, 16, cblock->textureFaces, vec4(1.0f));
|
batch->blockSprite(Window::width/2-24, uicamera->fov - 72, 48, 48, 16, cblock->textureFaces, vec4(1.0f));
|
||||||
} else if (cblock->model == BLOCK_MODEL_X_SPRITE){
|
} else if (cblock->model == BlockModel::xsprite){
|
||||||
batch->sprite(Window::width/2-24, uicamera->fov - 72, 48, 48, 16, cblock->textureFaces[3], vec4(1.0f));
|
batch->sprite(Window::width/2-24, uicamera->fov - 72, 48, 48, 16, cblock->textureFaces[3], vec4(1.0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -136,9 +136,9 @@ void WorldRenderer::draw(Camera* camera, bool occlusion, float fogFactor, float
|
|||||||
linesShader->use();
|
linesShader->use();
|
||||||
linesShader->uniformMatrix("u_projview", camera->getProjection()*camera->getView());
|
linesShader->uniformMatrix("u_projview", camera->getProjection()*camera->getView());
|
||||||
glLineWidth(2.0f);
|
glLineWidth(2.0f);
|
||||||
if (selectedBlock->model == 1){
|
if (selectedBlock->model == BlockModel::block){
|
||||||
lineBatch->box(pos.x+0.5f, pos.y+0.5f, pos.z+0.5f, 1.005f,1.005f,1.005f, 0,0,0,0.5f);
|
lineBatch->box(pos.x+0.5f, pos.y+0.5f, pos.z+0.5f, 1.005f,1.005f,1.005f, 0,0,0,0.5f);
|
||||||
} else if (selectedBlock->model == 2){
|
} else if (selectedBlock->model == BlockModel::xsprite){
|
||||||
lineBatch->box(pos.x+0.5f, pos.y+0.35f, pos.z+0.5f, 0.805f,0.705f,0.805f, 0,0,0,0.5f);
|
lineBatch->box(pos.x+0.5f, pos.y+0.35f, pos.z+0.5f, 0.805f,0.705f,0.805f, 0,0,0,0.5f);
|
||||||
}
|
}
|
||||||
lineBatch->render();
|
lineBatch->render();
|
||||||
|
|||||||
@ -313,7 +313,7 @@ void BlocksRenderer::render(const voxel* voxels, int atlas_size) {
|
|||||||
uvfor(def, 2, atlas_size), uvfor(def, 3, atlas_size),
|
uvfor(def, 2, atlas_size), uvfor(def, 3, atlas_size),
|
||||||
uvfor(def, 4, atlas_size), uvfor(def, 5, atlas_size) };
|
uvfor(def, 4, atlas_size), uvfor(def, 5, atlas_size) };
|
||||||
switch (def.model) {
|
switch (def.model) {
|
||||||
case BLOCK_MODEL_CUBE:
|
case BlockModel::block:
|
||||||
if (*((light_t*)&def.emission)) {
|
if (*((light_t*)&def.emission)) {
|
||||||
blockCube(x, y, z, vec3(1, 1, 1), texfaces, def.drawGroup);
|
blockCube(x, y, z, vec3(1, 1, 1), texfaces, def.drawGroup);
|
||||||
}
|
}
|
||||||
@ -321,7 +321,7 @@ void BlocksRenderer::render(const voxel* voxels, int atlas_size) {
|
|||||||
blockCubeShaded(x, y, z, vec3(1, 1, 1), texfaces, &def, vox.states);
|
blockCubeShaded(x, y, z, vec3(1, 1, 1), texfaces, &def, vox.states);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BLOCK_MODEL_X_SPRITE: {
|
case BlockModel::xsprite: {
|
||||||
blockXSprite(x, y, z, vec3(1, 1, 1), texfaces[FACE_MX], texfaces[FACE_MZ], 1.0f);
|
blockXSprite(x, y, z, vec3(1, 1, 1), texfaces[FACE_MX], texfaces[FACE_MZ], 1.0f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -243,7 +243,7 @@ void PlayerController::updateInteraction(){
|
|||||||
lighting->onBlockSet(x,y,z, 0);
|
lighting->onBlockSet(x,y,z, 0);
|
||||||
}
|
}
|
||||||
if (Events::jclicked(mousecode::BUTTON_2)){
|
if (Events::jclicked(mousecode::BUTTON_2)){
|
||||||
if (block->model != BLOCK_MODEL_X_SPRITE){
|
if (block->model != BlockModel::xsprite){
|
||||||
x = (int)(iend.x)+(int)(norm.x);
|
x = (int)(iend.x)+(int)(norm.x);
|
||||||
y = (int)(iend.y)+(int)(norm.y);
|
y = (int)(iend.y)+(int)(norm.y);
|
||||||
z = (int)(iend.z)+(int)(norm.z);
|
z = (int)(iend.z)+(int)(norm.z);
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
#ifndef VOXELS_BLOCK_H_
|
#ifndef VOXELS_BLOCK_H_
|
||||||
#define VOXELS_BLOCK_H_
|
#define VOXELS_BLOCK_H_
|
||||||
|
|
||||||
#define BLOCK_MODEL_CUBE 1
|
|
||||||
#define BLOCK_MODEL_X_SPRITE 2
|
|
||||||
|
|
||||||
#define FACE_MX 0
|
#define FACE_MX 0
|
||||||
#define FACE_PX 1
|
#define FACE_PX 1
|
||||||
#define FACE_MY 2
|
#define FACE_MY 2
|
||||||
@ -11,6 +8,10 @@
|
|||||||
#define FACE_MZ 4
|
#define FACE_MZ 4
|
||||||
#define FACE_PZ 5
|
#define FACE_PZ 5
|
||||||
|
|
||||||
|
enum class BlockModel {
|
||||||
|
none, block, xsprite
|
||||||
|
};
|
||||||
|
|
||||||
class Block {
|
class Block {
|
||||||
public:
|
public:
|
||||||
static Block* blocks[256];
|
static Block* blocks[256];
|
||||||
@ -20,7 +21,7 @@ public:
|
|||||||
int textureFaces[6]; // -x,x, -y,y, -z,z
|
int textureFaces[6]; // -x,x, -y,y, -z,z
|
||||||
unsigned char emission[3];
|
unsigned char emission[3];
|
||||||
unsigned char drawGroup = 0;
|
unsigned char drawGroup = 0;
|
||||||
unsigned char model = 1; // 0:None 1:Block 2:XSprite
|
BlockModel model = BlockModel::block;
|
||||||
bool lightPassing = false;
|
bool lightPassing = false;
|
||||||
bool skyLightPassing = false;
|
bool skyLightPassing = false;
|
||||||
bool obstacle = true;
|
bool obstacle = true;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user