Merge pull request #159 from mrpimpunicorn/master

Added rendering support for moist farmland
This commit is contained in:
Drew DeVault 2015-06-22 18:55:42 -06:00
commit 988fec61d9
2 changed files with 88 additions and 9 deletions

View File

@ -11,24 +11,94 @@ namespace TrueCraft.Client.Rendering.Blocks
static FarmlandRenderer()
{
BlockRenderer.RegisterRenderer(FarmlandBlock.BlockID, new FarmlandRenderer());
for (int i = 0; i < Texture.Length; i++)
Texture[i] *= new Vector2(16f / 256f);
for (int i = 0; i < DryTexture.Length; i++)
{
DryTexture[i] *= new Vector2(16f / 256f);
MoistTexture[i] *= new Vector2(16f / 256f);
}
}
private static Vector2 TextureMap = new Vector2(7, 5);
private static Vector2[] Texture =
private static Vector2 DryTopTexture = new Vector2(7, 5);
private static Vector2 MoistTopTexture = new Vector2(6, 5);
private static Vector2 SideTexture = new Vector2(2, 0);
private static Vector2[] DryTexture =
{
TextureMap + Vector2.UnitX + Vector2.UnitY,
TextureMap + Vector2.UnitY,
TextureMap,
TextureMap + Vector2.UnitX,
// Positive Z
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Negative Z
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Positive X
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Negative X
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Positive Y
DryTopTexture + Vector2.UnitX + Vector2.UnitY,
DryTopTexture + Vector2.UnitY,
DryTopTexture,
DryTopTexture + Vector2.UnitX,
// Negative Y
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
};
private static Vector2[] MoistTexture =
{
// Positive Z
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Negative Z
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Positive X
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Negative X
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
// Positive Y
MoistTopTexture + Vector2.UnitX + Vector2.UnitY,
MoistTopTexture + Vector2.UnitY,
MoistTopTexture,
MoistTopTexture + Vector2.UnitX,
// Negative Y
SideTexture + Vector2.UnitX + Vector2.UnitY,
SideTexture + Vector2.UnitY,
SideTexture,
SideTexture + Vector2.UnitX,
};
public override VertexPositionNormalColorTexture[] Render(BlockDescriptor descriptor, Vector3 offset,
Tuple<int, int> textureMap, int indiciesOffset, out int[] indicies)
{
var texture = DryTexture;
if (descriptor.Metadata == (byte)FarmlandBlock.MoistureLevel.Moist)
texture = MoistTexture;
var overhead = new Vector3(0.5f, 0.5f, 0.5f);
var cube = CreateUniformCube(overhead, Texture, indiciesOffset, out indicies, Color.White);
var cube = CreateUniformCube(overhead, texture, indiciesOffset, out indicies, Color.White);
for (int i = 0; i < cube.Length; i++)
{
if (cube[i].Position.Y > 0)

View File

@ -9,6 +9,15 @@ namespace TrueCraft.Core.Logic.Blocks
{
public class FarmlandBlock : BlockProvider
{
public enum MoistureLevel : byte
{
Dry = 0x0,
// Any value less than 0x7 is considered 'dry'
Moist = 0x7
}
public static readonly int UpdateIntervalSeconds = 30;
public static readonly byte BlockID = 0x3C;