Player Object

This commit is contained in:
2026-02-13 14:54:30 +00:00
parent b0511f3830
commit f617f799c2
3 changed files with 231 additions and 91 deletions

View File

@@ -55,18 +55,22 @@ namespace VoxelIsometricRenderer
TextureManager.AddBitmap(Resources.OrangeSquare);
TextureManager.AddBitmap(Resources.ColourEdges);
TextureManager.GenerateVoxelFaces();
PlayerObject.CreatePlayer(new int[] { 0, 0, 0, 0, 0, 0 }, 0, new BlockState(false, BlockType.Ground, false));
Chunk TestChunk = ChunkRegistry.IndexChunk(0, 0, 0);
Random rnd = new Random();
for (int i = 0; i < 16; i++) {
for (int j = 0; j < 16; j++) {
for (int k = 0; k < 16; k++) {
if (i < 5 && k < 5 && rnd.Next(0, 3) > 0) TestChunk.CreateBlock(new int[] { rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13) }, 0, new BlockState(false, BlockType.Ground, true), i, j, k);
if (i < 8 && k < 8 && rnd.Next(0,1)==0) TestChunk.CreateBlock(new int[] { rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13), rnd.Next(0, 13) }, 0, new BlockState(false, BlockType.Ground, true), i, j, k);
else TestChunk.CreateAir(i, j, k);
}
}
}
LightingManager.Lights.Add(new LightSource(LightShape.Sphere,12,12,12, 5, 18, 5, new float[] {0.8f,0.0f,0.0f},64));
LightingManager.Lights.Add(new LightSource(LightShape.Sphere,12,12,12, 5, 8, 5, new float[] {0.0f,0.0f,0.6f},64));
//LightingManager.Lights.Add(new LightSource(LightShape.Sphere,7,7,7, 6, 14, 7, new float[] {0.8f,0.8f,0.0f}, 255));
//LightingManager.Lights.Add(new LightSource(LightShape.Sphere, 15, 15, 15, 7,18,7, new float[] {1.8f,0.0f,0.0f},255));
//LightingManager.Lights.Add(new LightSource(LightShape.Sphere,15,15,15, 3, 8, 15, new float[] {0.0f,1.8f,0.0f},255));
LightingManager.Lights.Add(new LightSource(LightShape.Sphere,12,12,12, 10, 18, 10, new float[] {0.0f,0.0f,1.8f}, 255));
LightingManager.Lights.Add(new LightSource(LightShape.Sphere, 5, 5, 5, 4,18,4, new float[] {0.8f,0.0f,0.0f},255));
TestChunk.GenerateLightMap();
TestChunk.CalculateCull();
MainThread = new Thread(Runtime);
@@ -77,9 +81,11 @@ namespace VoxelIsometricRenderer
private void Runtime()
{
bool up = false;
bool up = true;
bool Down = true;
double LightingFrameTime = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
double SecondFrameTime = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
double _64ms = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
while (running)
{
Display.Refresh();
@@ -87,26 +93,31 @@ namespace VoxelIsometricRenderer
{
LightingFrameTime = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
LightingManager.UpdateLighting();
//LightingManager.Lights[0].SetPosition(PlayerObject.GetPos());
//LightingManager.sunAngles[0] += 5f;
//LightingManager.sunAngles[1] += 1f;
}
if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds - SecondFrameTime > 1000) {
int[] pos = LightingManager.Lights[0].GetPosition();
int[] pos2 = LightingManager.Lights[1].GetPosition();
if (up && pos[0] > 0)
if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds - _64ms > 64)
{
PlayerObject.UpdateCamera();
_64ms = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
int[] Pos = LightingManager.Lights[0].GetPosition();
if (up && Pos[1] < 25)
{
pos[0]--;
pos2[1]--;
}
else if (up) up = false;
else if (pos[0] < 10)
Pos[1]++;
} else if (up) up = false;
else if (Pos[1] > -5)
{
pos[0]++;
pos2[1]++;
Pos[1]--;
}
else up = true;
//LightingManager.Lights[0].SetPosition(pos);
//LightingManager.Lights[1].SetPosition(pos2);
else
{
up = true;
}
LightingManager.Lights[0].SetPosition(Pos);
}
if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds - SecondFrameTime > 1000)
{
TotalRamUsage = Math.Round(System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / 1000000.0);
RamUsage = Math.Round(GC.GetTotalMemory(false) / 1000000.0);
SecondFrameTime = Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
@@ -120,8 +131,9 @@ namespace VoxelIsometricRenderer
Graphics g = e.Graphics;
g.PixelOffsetMode = PixelOffsetMode.Half;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
g.ScaleTransform(scale, scale);
g.ScaleTransform(TextureManager.RenderScale, TextureManager.RenderScale);
ChunkRegistry.RenderChunk(g, 0);
PlayerObject.Draw(g);
g.ResetTransform();
g.DrawString(String.Format("FPS: {0} Ram Usage: {9}MB Ram Allocated: {8}MB\nSunValue: {1}\nMoonValue:{3}\nLightDirection:{4}\nAmbientColourGrading: R{5} G{6} B{7}\nSunAngles:{2}", FPS, LightingManager.SkyLightMetrics[0], String.Format(" x={0}° y={1}°", LightingManager.sunAngles[0], LightingManager.sunAngles[1]), LightingManager.SkyLightMetrics[2], LightingManager.SunAngle, LightingManager.SkyLightMetrics[3], LightingManager.SkyLightMetrics[4], LightingManager.SkyLightMetrics[5], TotalRamUsage, RamUsage), SystemFonts.DefaultFont, Brushes.Red, new PointF(0, 0));
Frames++;
@@ -131,9 +143,10 @@ namespace VoxelIsometricRenderer
Display.Left = 0;
Display.Top = 0;
Display.Width = Width;
Display.Height = Height;
Display.Height = Height -32;
width = Width;
height = Height;
height = Height -32;
PlayerObject.UpdateCameraCentre(Width, Height - 32);
}
private void ResizeAspectRatio(object sender, EventArgs e)
{
@@ -147,8 +160,8 @@ namespace VoxelIsometricRenderer
private void KeyDownEvent(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Add) scale += 0.25f;
if (e.KeyCode == Keys.Subtract) scale -= 0.25f;
if (e.KeyCode == Keys.Add) TextureManager.RenderScale += 0.25f;
if (e.KeyCode == Keys.Subtract) TextureManager.RenderScale -= 0.25f;
if (e.KeyCode == Keys.Up)
{
LightingManager.sunAngles[1] += 10f;
@@ -167,19 +180,19 @@ namespace VoxelIsometricRenderer
}
if (e.KeyCode == Keys.W)
{
PlayerObject.IncrementPos(2, 1);
PlayerObject.IncrementPos(2, -1);
}
if (e.KeyCode == Keys.S)
{
PlayerObject.IncrementPos(2, -1);
PlayerObject.IncrementPos(2, 1);
}
if (e.KeyCode == Keys.A)
{
PlayerObject.IncrementPos(0, 1);
PlayerObject.IncrementPos(0, -1);
}
if (e.KeyCode == Keys.D)
{
PlayerObject.IncrementPos(0, -1);
PlayerObject.IncrementPos(0, 1);
}
if (e.KeyCode == Keys.Space)
{