diff --git a/PlayBark.csproj b/PlayBark.csproj
index 8ae31a4..7d42e75 100644
--- a/PlayBark.csproj
+++ b/PlayBark.csproj
@@ -4,6 +4,7 @@
Exe
net8.0
enable
+ true
enable
diff --git a/Program.cs b/Program.cs
index b87b1e4..0587c20 100644
--- a/Program.cs
+++ b/Program.cs
@@ -5,7 +5,7 @@
///
/// The name of the configuration file (defaults to "config.toml").
/// A Config object populated with values from the file, or a default Config instance if the file is not found.
-static Config ReadConfig(string file)
+static Config Settings(string file)
{
var cfgPath = Path.Combine(Tracer.AppDirectory, file);
@@ -28,35 +28,55 @@ static Config ReadConfig(string file)
return model;
}
-void Init(int screenWidth, int screenHeight, int fps)
+// Update and Draw
+unsafe int Game()
{
+ var config = Settings("config.toml");
+ InitWindow(config.Width, config.Height, $"PlayBark");
+
var pos = new Vector3(0.2f, 0.4f, 0.2f);
var target = new Vector3(0.0f, 0.0f, 0.0f);
var up = new Vector3(0.0f, 1.0f, 0.0f);
+ var camera = World3D.Camera(pos, target, up, CameraProjection.Perspective);
- InitWindow(screenWidth, screenHeight, $"PlayBark");
- World3D.InitCamera(pos, target, up, CameraProjection.Perspective);
- SetTargetFPS(fps);
-}
+ var imMap = LoadImage("resources/cubicmap.png");
+ var cubicMap = LoadTextureFromImage(imMap);
+ var mesh = GenMeshCubicmap(imMap, new Vector3(1.0f, 1.0f, 1.0f));
+ var model = LoadModelFromMesh(mesh);
-int GameLoop()
-{
- var config = ReadConfig("config.toml");
- Init(config.Width, config.Height, 60);
+ var texture = LoadTexture("resources/cubicmap_atlas.png");
+ // Set map diffuse texture
+ SetMaterialTexture(ref model, 0, MaterialMapIndex.Albedo, ref texture);
+
+ // Get image map data to be used for collission
+ var mapPixels = LoadImageColors(imMap);
+ UnloadImage(imMap);
+
+ SetTargetFPS(60);
while (!WindowShouldClose())
{
BeginDrawing();
ClearBackground(Color.White);
+ var oldCamPos = camera.Position;
+ UpdateCamera(ref camera, CameraMode.FirstPerson);
+
DrawFPS(10, 10);
EndDrawing();
}
+ UnloadImageColors(mapPixels);
+
+ UnloadTexture(cubicMap);
+ UnloadTexture(texture);
+ UnloadModel(model);
+
CloseWindow();
return 0;
}
-GameLoop();
+// Entry point
+Game();
diff --git a/World3D.cs b/World3D.cs
index 7932cd9..abf4a9a 100644
--- a/World3D.cs
+++ b/World3D.cs
@@ -3,9 +3,9 @@ namespace PlayBark;
internal static class World3D
{
- public static Camera3D InitCamera(Vector3 pos, Vector3 target, Vector3 up, CameraProjection projection)
+ public static Camera3D Camera(Vector3 pos, Vector3 target, Vector3 up, CameraProjection projection)
{
- Camera3D camera = new();
+ var camera = new Camera3D();
camera.Position = pos;
camera.Target = target;
camera.Up = up;
diff --git a/resources/cubicmap_atlas.png b/resources/cubicmap_atlas.png
new file mode 100644
index 0000000..9fc404a
Binary files /dev/null and b/resources/cubicmap_atlas.png differ