chunk stuff and camera smoothing
This commit is contained in:
@@ -26,7 +26,8 @@ namespace VoxelIsometricRenderer
|
||||
static Rectangle PlayerPosition = new Rectangle(0,0,100,100);
|
||||
public static void Draw(Graphics g)
|
||||
{
|
||||
BlockRegistry.RenderBlock(g,BlockID, BlockposX, BlockposY, BlockposZ, 1);
|
||||
Chunk PlayerChunk = ChunkRegistry.FetchChunk(String.Format("x={0};y={1};z={2}", (int)Math.Floor(BlockposX / (double)ChunkRegistry.FetchDimensions()[0]), (int)Math.Floor(BlockposY / (double)ChunkRegistry.FetchDimensions()[1]), (int)Math.Floor(BlockposZ / (double)ChunkRegistry.FetchDimensions()[2])));
|
||||
BlockRegistry.RenderBlock(g,BlockID, BlockposX, BlockposY, BlockposZ, PlayerChunk != null ? PlayerChunk.SkyLightHeightMap[Math.Min(BlockposX - (PlayerChunk.ChunkPos[0] * ChunkRegistry.FetchDimensions()[0]) + 1, PlayerChunk.SkyLightHeightMap.GetLength(0) - 1), Math.Min(BlockposY - (PlayerChunk.ChunkPos[1] * ChunkRegistry.FetchDimensions()[1]) + 1, ChunkRegistry.FetchDimensions()[1] - 1), Math.Max(BlockposZ - (PlayerChunk.ChunkPos[2] * ChunkRegistry.FetchDimensions()[2]) - 1, 0)] : 1);
|
||||
int[] Positions = BlockRegistry.GetDrawLocation(BlockposX, BlockposY, BlockposZ,PositionX,PositionY,PositionZ);
|
||||
if (Positions[0] != LastPositions[0] || Positions[1] != LastPositions[1])
|
||||
{
|
||||
@@ -51,9 +52,9 @@ namespace VoxelIsometricRenderer
|
||||
if (LightingManager.Square(CameraCentre.Y - PlayerPosition.Y) > LightingManager.Square(CameraCentre.Y - NextPosition.Y) && !CameraCentre.Contains(CameraCentre.X, PlayerPosition.Y))
|
||||
{
|
||||
float Iterator = 0;
|
||||
while (!CameraCentre.Contains(CameraCentre.X,NextPosition.Y) && Iterator < 100)
|
||||
//while (!CameraCentre.Contains(CameraCentre.X,NextPosition.Y) && Iterator < 2)
|
||||
{
|
||||
Iterator+=0.1f;
|
||||
Iterator+= LightingManager.Square(CameraCentre.Y - NextPosition.Y) <= 10000 ? 0.1f : 1;
|
||||
Positions = BlockRegistry.GetDrawLocation(BlockposX, BlockposY, BlockposZ, PositionX, PositionY + Iterator, PositionZ);
|
||||
NextPosition = new Rectangle(Positions[0] + (int)(Terrain4.width / (2 * TextureManager.RenderScale)), Positions[1] + (int)(Terrain4.height / (2 * TextureManager.RenderScale)), TextureManager.VoxelSize, TextureManager.VoxelSize);
|
||||
}
|
||||
@@ -62,9 +63,9 @@ namespace VoxelIsometricRenderer
|
||||
else if (LightingManager.Square(CameraCentre.Y - PlayerPosition.Y) < LightingManager.Square(CameraCentre.Y - NextPosition.Y))
|
||||
{
|
||||
float Iterator = 0;
|
||||
while (!CameraCentre.Contains(CameraCentre.X, NextPosition.Y))
|
||||
//while (!CameraCentre.Contains(CameraCentre.X, NextPosition.Y) && Iterator > -2)
|
||||
{
|
||||
Iterator--;
|
||||
Iterator-= LightingManager.Square(CameraCentre.Y - NextPosition.Y) <= 10000 ? 0.1f : 1;
|
||||
Positions = BlockRegistry.GetDrawLocation(BlockposX, BlockposY, BlockposZ, PositionX, PositionY + Iterator, PositionZ);
|
||||
NextPosition = new Rectangle(Positions[0] + (int)(Terrain4.width / (2 * TextureManager.RenderScale)), Positions[1] + (int)(Terrain4.height / (2 * TextureManager.RenderScale)), TextureManager.VoxelSize, TextureManager.VoxelSize);
|
||||
}
|
||||
@@ -74,10 +75,10 @@ namespace VoxelIsometricRenderer
|
||||
{
|
||||
float IteratorX = 0;
|
||||
float IteratorZ = 0;
|
||||
while (!CameraCentre.Contains(NextPositionX.X, CameraCentre.Y) && IteratorX > -2 && IteratorZ < 2)
|
||||
//while (!CameraCentre.Contains(NextPositionX.X, CameraCentre.Y) && IteratorX > -2 && IteratorZ < 2)
|
||||
{
|
||||
IteratorX-=0.1f;
|
||||
IteratorZ+=0.1f;
|
||||
IteratorX-= LightingManager.Square(CameraCentre.X - NextPositionX.X) <= 10000 ? 0.1f : 1;
|
||||
IteratorZ+= LightingManager.Square(CameraCentre.X - NextPositionX.X) <= 10000 ? 0.1f : 1;
|
||||
PositionsX = BlockRegistry.GetDrawLocation(BlockposX, BlockposY, BlockposZ, PositionX + IteratorX, PositionY, PositionZ + IteratorZ);
|
||||
NextPositionX = new Rectangle(PositionsX[0] + (int)(Terrain4.width / (2 * TextureManager.RenderScale)), PositionsX[1] + (int)(Terrain4.height / (2 * TextureManager.RenderScale)), TextureManager.VoxelSize, TextureManager.VoxelSize);
|
||||
}
|
||||
@@ -88,10 +89,10 @@ namespace VoxelIsometricRenderer
|
||||
{
|
||||
float IteratorX = 0;
|
||||
float IteratorZ = 0;
|
||||
while (!CameraCentre.Contains(NextPositionX.X, CameraCentre.Y) && IteratorZ > -1 && IteratorX < 1)
|
||||
//while (!CameraCentre.Contains(NextPositionX.X, CameraCentre.Y) && IteratorZ > -1 && IteratorX < 1)
|
||||
{
|
||||
IteratorX+=0.1f;
|
||||
IteratorZ-=0.1f;
|
||||
IteratorX+= LightingManager.Square(CameraCentre.X - NextPositionX.X) <= 10000 ? 0.1f : 1;
|
||||
IteratorZ -= LightingManager.Square(CameraCentre.X - NextPositionX.X) <= 10000 ? 0.1f : 1;
|
||||
PositionsX = BlockRegistry.GetDrawLocation(BlockposX, BlockposY, BlockposZ, PositionX + IteratorX, PositionY, PositionZ + IteratorZ);
|
||||
NextPositionX = new Rectangle(PositionsX[0] + (int)(Terrain4.width / (2 * TextureManager.RenderScale)), PositionsX[1] + (int)(Terrain4.height / (2 * TextureManager.RenderScale)), TextureManager.VoxelSize, TextureManager.VoxelSize);
|
||||
}
|
||||
@@ -106,7 +107,7 @@ namespace VoxelIsometricRenderer
|
||||
}
|
||||
public static void UpdateCameraCentre(int Width, int Height)
|
||||
{
|
||||
CameraCentre = new Rectangle((int)((Width/(2 * TextureManager.RenderScale)) - TextureManager.VoxelSize), (int)((Height/ (2 * TextureManager.RenderScale)) - (TextureManager.VoxelSize)), (int)(TextureManager.VoxelSize*2), (int)(TextureManager.VoxelSize*2));
|
||||
CameraCentre = new Rectangle((int)((Width/(2 * TextureManager.RenderScale)) - TextureManager.VoxelSize/6), (int)((Height/ (2 * TextureManager.RenderScale)) - (TextureManager.VoxelSize/6)), (int)(TextureManager.VoxelSize/3), (int)(TextureManager.VoxelSize/3));
|
||||
}
|
||||
public static void CreatePlayer(int[] Faces, int RenderType, BlockState blockState)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user