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()
|
static FarmlandRenderer()
|
||||||
{
|
{
|
||||||
BlockRenderer.RegisterRenderer(FarmlandBlock.BlockID, new FarmlandRenderer());
|
BlockRenderer.RegisterRenderer(FarmlandBlock.BlockID, new FarmlandRenderer());
|
||||||
for (int i = 0; i < Texture.Length; i++)
|
for (int i = 0; i < DryTexture.Length; i++)
|
||||||
Texture[i] *= new Vector2(16f / 256f);
|
{
|
||||||
|
DryTexture[i] *= new Vector2(16f / 256f);
|
||||||
|
MoistTexture[i] *= new Vector2(16f / 256f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Vector2 TextureMap = new Vector2(7, 5);
|
private static Vector2 DryTopTexture = new Vector2(7, 5);
|
||||||
private static Vector2[] Texture =
|
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,
|
// Positive Z
|
||||||
TextureMap + Vector2.UnitY,
|
SideTexture + Vector2.UnitX + Vector2.UnitY,
|
||||||
TextureMap,
|
SideTexture + Vector2.UnitY,
|
||||||
TextureMap + Vector2.UnitX,
|
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,
|
public override VertexPositionNormalColorTexture[] Render(BlockDescriptor descriptor, Vector3 offset,
|
||||||
Tuple<int, int> textureMap, int indiciesOffset, out int[] indicies)
|
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 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++)
|
for (int i = 0; i < cube.Length; i++)
|
||||||
{
|
{
|
||||||
if (cube[i].Position.Y > 0)
|
if (cube[i].Position.Y > 0)
|
||||||
|
@ -9,6 +9,15 @@ namespace TrueCraft.Core.Logic.Blocks
|
|||||||
{
|
{
|
||||||
public class FarmlandBlock : BlockProvider
|
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 int UpdateIntervalSeconds = 30;
|
||||||
|
|
||||||
public static readonly byte BlockID = 0x3C;
|
public static readonly byte BlockID = 0x3C;
|
||||||
|
Reference in New Issue
Block a user