Merge pull request #159 from mrpimpunicorn/master
Added rendering support for moist farmland
This commit is contained in:
commit
988fec61d9
@ -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)
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user