feat: add block model with IBlock flyweight and registry
This commit is contained in:
10
World/Blocks/AirBlock.cs
Normal file
10
World/Blocks/AirBlock.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace VoxelEngine.World.Blocks;
|
||||
|
||||
public sealed class AirBlock : IBlock
|
||||
{
|
||||
public ushort Id => 0;
|
||||
public string Name => "Air";
|
||||
public bool IsOpaque => false;
|
||||
public bool IsSolid => false;
|
||||
public int GetTextureIndex(BlockFace face) => 0;
|
||||
}
|
||||
10
World/Blocks/DirtBlock.cs
Normal file
10
World/Blocks/DirtBlock.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace VoxelEngine.World.Blocks;
|
||||
|
||||
public sealed class DirtBlock : IBlock
|
||||
{
|
||||
public ushort Id => 2;
|
||||
public string Name => "Dirt";
|
||||
public bool IsOpaque => true;
|
||||
public bool IsSolid => true;
|
||||
public int GetTextureIndex(BlockFace face) => 1;
|
||||
}
|
||||
16
World/Blocks/GrassBlock.cs
Normal file
16
World/Blocks/GrassBlock.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace VoxelEngine.World.Blocks;
|
||||
|
||||
public sealed class GrassBlock : IBlock
|
||||
{
|
||||
public ushort Id => 3;
|
||||
public string Name => "Grass";
|
||||
public bool IsOpaque => true;
|
||||
public bool IsSolid => true;
|
||||
|
||||
public int GetTextureIndex(BlockFace face) => face switch
|
||||
{
|
||||
BlockFace.Top => 0, // grass top
|
||||
BlockFace.Bottom => 1, // dirt
|
||||
_ => 3 // grass side
|
||||
};
|
||||
}
|
||||
10
World/Blocks/StoneBlock.cs
Normal file
10
World/Blocks/StoneBlock.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace VoxelEngine.World.Blocks;
|
||||
|
||||
public sealed class StoneBlock : IBlock
|
||||
{
|
||||
public ushort Id => 1;
|
||||
public string Name => "Stone";
|
||||
public bool IsOpaque => true;
|
||||
public bool IsSolid => true;
|
||||
public int GetTextureIndex(BlockFace face) => 2;
|
||||
}
|
||||
Reference in New Issue
Block a user