mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-12-22 20:08:20 -06:00
fix issues with refactor
This commit is contained in:
parent
365ab73643
commit
ae488d090e
|
@ -78,3 +78,19 @@ impl Textures {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, Debug)]
|
||||||
|
#[repr(u8)]
|
||||||
|
pub enum BlockTexture {
|
||||||
|
Stone = 0,
|
||||||
|
Dirt = 1,
|
||||||
|
GrassTop = 2,
|
||||||
|
GrassSide = 3,
|
||||||
|
Sand = 4,
|
||||||
|
Bedrock = 5,
|
||||||
|
Tree = 6,
|
||||||
|
TreeTop = 7,
|
||||||
|
Leaf = 8,
|
||||||
|
Torch = 9,
|
||||||
|
TallGrass = 10,
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
use strum::{EnumIter, IntoEnumIterator};
|
use strum::{EnumIter, IntoEnumIterator};
|
||||||
use crate::game::items::Item;
|
use crate::game::{
|
||||||
|
items::Item,
|
||||||
|
assets::textures::BlockTexture,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug)]
|
#[derive(Clone, Copy, Debug)]
|
||||||
pub enum CollisionType {
|
pub enum CollisionType {
|
||||||
|
@ -18,15 +22,15 @@ pub enum RenderType {
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug)]
|
#[derive(Clone, Copy, Debug)]
|
||||||
pub struct BlockTextures {
|
pub struct BlockTextures {
|
||||||
pub top: u8,
|
pub top: BlockTexture,
|
||||||
pub bottom: u8,
|
pub bottom: BlockTexture,
|
||||||
pub left: u8,
|
pub left: BlockTexture,
|
||||||
pub right: u8,
|
pub right: BlockTexture,
|
||||||
pub back: u8,
|
pub back: BlockTexture,
|
||||||
pub front: u8,
|
pub front: BlockTexture,
|
||||||
}
|
}
|
||||||
impl BlockTextures {
|
impl BlockTextures {
|
||||||
pub const fn all(tex: u8) -> Self {
|
pub const fn all(tex: BlockTexture) -> Self {
|
||||||
Self {
|
Self {
|
||||||
top: tex,
|
top: tex,
|
||||||
bottom: tex,
|
bottom: tex,
|
||||||
|
@ -36,7 +40,7 @@ impl BlockTextures {
|
||||||
front: tex,
|
front: tex,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub const fn top_sides_bottom(top: u8, sides: u8, bottom: u8) -> Self {
|
pub const fn top_sides_bottom(top: BlockTexture, sides: BlockTexture, bottom: BlockTexture) -> Self {
|
||||||
Self {
|
Self {
|
||||||
top,
|
top,
|
||||||
bottom,
|
bottom,
|
||||||
|
@ -65,7 +69,7 @@ impl BlockDescriptor {
|
||||||
id: "default",
|
id: "default",
|
||||||
collision: Some(CollisionType::Solid),
|
collision: Some(CollisionType::Solid),
|
||||||
raycast_collision: true,
|
raycast_collision: true,
|
||||||
render: Some((RenderType::OpaqueBlock, BlockTextures::all(0))),
|
render: Some((RenderType::OpaqueBlock, BlockTextures::all(BlockTexture::Stone))),
|
||||||
item: None
|
item: None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +109,7 @@ impl Block {
|
||||||
id: "stone",
|
id: "stone",
|
||||||
collision: Some(CollisionType::Solid),
|
collision: Some(CollisionType::Solid),
|
||||||
raycast_collision: true,
|
raycast_collision: true,
|
||||||
render: Some((RenderType::OpaqueBlock, BlockTextures::all(1))),
|
render: Some((RenderType::OpaqueBlock, BlockTextures::all(BlockTexture::Stone))),
|
||||||
item: Some(Item::StoneBlock)
|
item: Some(Item::StoneBlock)
|
||||||
},
|
},
|
||||||
Self::Dirt => BlockDescriptor {
|
Self::Dirt => BlockDescriptor {
|
||||||
|
@ -113,7 +117,7 @@ impl Block {
|
||||||
id: "dirt",
|
id: "dirt",
|
||||||
collision: Some(CollisionType::Solid),
|
collision: Some(CollisionType::Solid),
|
||||||
raycast_collision: true,
|
raycast_collision: true,
|
||||||
render: Some((RenderType::OpaqueBlock, BlockTextures::all(2))),
|
render: Some((RenderType::OpaqueBlock, BlockTextures::all(BlockTexture::Dirt))),
|
||||||
item: Some(Item::DirtBlock)
|
item: Some(Item::DirtBlock)
|
||||||
},
|
},
|
||||||
Self::Grass => BlockDescriptor {
|
Self::Grass => BlockDescriptor {
|
||||||
|
@ -121,7 +125,7 @@ impl Block {
|
||||||
id: "grass",
|
id: "grass",
|
||||||
collision: Some(CollisionType::Solid),
|
collision: Some(CollisionType::Solid),
|
||||||
raycast_collision: true,
|
raycast_collision: true,
|
||||||
render: Some((RenderType::OpaqueBlock, BlockTextures::top_sides_bottom(0, 3, 2))),
|
render: Some((RenderType::OpaqueBlock, BlockTextures::top_sides_bottom(BlockTexture::GrassTop, BlockTexture::GrassSide, BlockTexture::Dirt))),
|
||||||
item: Some(Item::DirtBlock)
|
item: Some(Item::DirtBlock)
|
||||||
},
|
},
|
||||||
Self::Sand => BlockDescriptor {
|
Self::Sand => BlockDescriptor {
|
||||||
|
@ -129,7 +133,7 @@ impl Block {
|
||||||
id: "sand",
|
id: "sand",
|
||||||
collision: Some(CollisionType::Solid),
|
collision: Some(CollisionType::Solid),
|
||||||
raycast_collision: true,
|
raycast_collision: true,
|
||||||
render: Some((RenderType::OpaqueBlock, BlockTextures::all(4))), //this is not a sand tex
|
render: Some((RenderType::OpaqueBlock, BlockTextures::all(BlockTexture::Sand))), //this is not a sand tex
|
||||||
item: Some(Item::StoneBlock)
|
item: Some(Item::StoneBlock)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,13 @@ in uint tex_index;
|
||||||
out vec2 v_uv;
|
out vec2 v_uv;
|
||||||
out vec3 v_normal;
|
out vec3 v_normal;
|
||||||
flat out uint v_tex_index;
|
flat out uint v_tex_index;
|
||||||
uniform vec3 position_offset;
|
uniform vec2 position_offset;
|
||||||
uniform mat4 perspective;
|
uniform mat4 perspective;
|
||||||
uniform mat4 view;
|
uniform mat4 view;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
v_normal = normal;
|
v_normal = normal;
|
||||||
v_tex_index = tex_index;
|
v_tex_index = tex_index;
|
||||||
gl_Position = perspective * view * vec4(position, 1.0) * vec4(position_offset, 1.0);
|
v_uv = uv;
|
||||||
|
gl_Position = perspective * view * (vec4(position, 1.0) + vec4(position_offset.x, 0., position_offset.y, 0.));
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,13 +86,7 @@ impl World {
|
||||||
&mesh.index_buffer,
|
&mesh.index_buffer,
|
||||||
&programs.chunk,
|
&programs.chunk,
|
||||||
&uniform! {
|
&uniform! {
|
||||||
model: [
|
position_offset: (position.as_vec2() * CHUNK_SIZE as f32).to_array(),
|
||||||
[1., 0., 0., 0.],
|
|
||||||
[0., 1., 0., 0.],
|
|
||||||
[0., 0., 1., 0.],
|
|
||||||
//[0., 0., 0., 1.0_f32]
|
|
||||||
[(position.x * CHUNK_SIZE as i32) as f32, 0., (position.y * CHUNK_SIZE as i32) as f32, 1.0_f32]
|
|
||||||
],
|
|
||||||
view: view,
|
view: view,
|
||||||
perspective: perspective,
|
perspective: perspective,
|
||||||
tex: Sampler(&assets.textures.blocks, sampler)
|
tex: Sampler(&assets.textures.blocks, sampler)
|
||||||
|
|
|
@ -120,7 +120,7 @@ pub fn generate_mesh(position: IVec2, chunk_data: ChunkData, neighbors: [ChunkDa
|
||||||
};
|
};
|
||||||
if show {
|
if show {
|
||||||
let texures = descriptor.render.unwrap().1;
|
let texures = descriptor.render.unwrap().1;
|
||||||
let texture_index = match face {
|
let block_texture = match face {
|
||||||
CubeFace::Top => texures.top,
|
CubeFace::Top => texures.top,
|
||||||
CubeFace::Front => texures.front,
|
CubeFace::Front => texures.front,
|
||||||
CubeFace::Left => texures.left,
|
CubeFace::Left => texures.left,
|
||||||
|
@ -128,7 +128,7 @@ pub fn generate_mesh(position: IVec2, chunk_data: ChunkData, neighbors: [ChunkDa
|
||||||
CubeFace::Back => texures.back,
|
CubeFace::Back => texures.back,
|
||||||
CubeFace::Bottom => texures.bottom,
|
CubeFace::Bottom => texures.bottom,
|
||||||
};
|
};
|
||||||
builer.add_face(face, coord, texture_index);
|
builer.add_face(face, coord, block_texture as u8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue