From 89da6f65b1301a9a64636c249cc6643afab16db3 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sat, 8 Apr 2023 13:34:37 -0500 Subject: [PATCH] Decouple mesh from object code so we don't have to reload models constantly. --- Faceball2030/assets/enemies/#ShootMe.wings# | Bin 0 -> 36217 bytes Faceball2030/main.cpp | 66 ++++++++++++-------- 2 files changed, 41 insertions(+), 25 deletions(-) create mode 100644 Faceball2030/assets/enemies/#ShootMe.wings# diff --git a/Faceball2030/assets/enemies/#ShootMe.wings# b/Faceball2030/assets/enemies/#ShootMe.wings# new file mode 100644 index 0000000000000000000000000000000000000000..d9665dbb9dced0464a21117b3a7fdf9b9c6b12f4 GIT binary patch literal 36217 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 literal 0 HcmV?d00001 diff --git a/Faceball2030/main.cpp b/Faceball2030/main.cpp index 6063ec5..75034d9 100644 --- a/Faceball2030/main.cpp +++ b/Faceball2030/main.cpp @@ -30,7 +30,7 @@ struct vec3d float w = 1; }; -struct triangle +struct Triangle { vec3d p[3]; vec2d uv[3]; @@ -45,12 +45,19 @@ struct MapSquare { Decal* wallW=NULL; }; -struct mesh +struct Mesh { - std::vector tris; - Decal* texture; - float rot=0; + std::vector tris; + Decal* texture=NULL; + Mesh() {} + + Mesh(std::string filename,Decal*tex) + :texture(tex){ + LoadFromObjectFile(filename); + } + + private: void Parse(std::string str, int& v, int& uv) { std::cout << str << "\n"; std::stringstream s(str.substr(0, str.find("/") + 1)); @@ -107,6 +114,12 @@ struct mesh }; +struct Object { + Mesh mesh; + vf2d pos = { 0,0 }; + float rot = 0; +}; + struct mat4x4 { float m[4][4] = { 0 }; @@ -125,7 +138,7 @@ public: private: - mesh mapMesh; + Mesh mapMesh; mat4x4 matProj; vec3d vCamera = { 5,0.5,5 }; @@ -324,7 +337,7 @@ private: } - int Triangle_ClipAgainstPlane(vec3d plane_p, vec3d plane_n, triangle& in_tri, triangle& out_tri1, triangle& out_tri2) + int Triangle_ClipAgainstPlane(vec3d plane_p, vec3d plane_n, Triangle& in_tri, Triangle& out_tri1, Triangle& out_tri2) { // Make sure plane normal is indeed normal plane_n = Vector_Normalise(plane_n); @@ -477,17 +490,19 @@ private: mat4x4 matCamera = Matrix_PointAt(vCamera, vTarget, vUp); mat4x4 matView = Matrix_QuickInverse(matCamera); - std::vectorvecTrianglesToRaster; + std::vectorvecTrianglesToRaster; // Draw Triangles - for (auto& mesh : objects) { - for (auto& tri : mesh.tris){ - triangle triProjected, triTransformed, triViewed; + for (auto& obj : objects) { + for (auto& tri : obj.mesh.tris){ + Triangle triProjected, triTransformed, triViewed; //mat4x4 matTrans = Matrix_MakeTranslation(-mesh.size.x/2, 0, -mesh.size.x/2); mat4x4 localMat = Matrix_MakeIdentity(); //localMat = Matrix_MultiplyMatrix(localMat, matTrans); - mat4x4 rotMat = Matrix_MakeRotationY(mesh.rot); + mat4x4 rotMat = Matrix_MakeRotationY(obj.rot); localMat = Matrix_MultiplyMatrix(localMat, rotMat); + mat4x4 matTrans = Matrix_MakeTranslation(obj.pos.x, 0, obj.pos.y); + localMat = Matrix_MultiplyMatrix(localMat, matTrans); triTransformed.p[0] = Matrix_MultiplyVector(localMat, tri.p[0]); triTransformed.p[1] = Matrix_MultiplyVector(localMat, tri.p[1]); @@ -521,7 +536,7 @@ private: triViewed.col = Pixel(triTransformed.col.r * dp * dp, triTransformed.col.g * dp * dp, triTransformed.col.b * dp * dp); int nClippedTriangles = 0; - triangle clipped[2]; + Triangle clipped[2]; nClippedTriangles = Triangle_ClipAgainstPlane({ 0.0f, 0.0f, 0.1f }, { 0.0f, 0.0f, 1.0f }, triViewed, clipped[0], clipped[1]); for (int n = 0; n < nClippedTriangles; n++) { @@ -568,7 +583,7 @@ private: triProjected.p[1].y *= 0.5f * (float)ScreenHeight(); triProjected.p[2].x *= 0.5f * (float)ScreenWidth(); triProjected.p[2].y *= 0.5f * (float)ScreenHeight(); - triProjected.tex = mesh.texture; + triProjected.tex = obj.mesh.texture; vecTrianglesToRaster.push_back(triProjected); } @@ -581,8 +596,8 @@ private: int triRenderCount = 0; for (auto& triToRaster : vecTrianglesToRaster) { - triangle clipped[2]; - std::listlistTriangles; + Triangle clipped[2]; + std::listlistTriangles; listTriangles.push_back(triToRaster); int nNewTriangles = 1; @@ -592,7 +607,7 @@ private: while (nNewTriangles > 0) { // Take triangle from front of queue - triangle test = listTriangles.front(); + Triangle test = listTriangles.front(); listTriangles.pop_front(); nNewTriangles--; @@ -718,7 +733,7 @@ private: Decal* dot,*enemy_ShootMe_tex; vi2d MAP_SIZE = { 10,10 }; std::vector>map; - std::vectorobjects; + std::vectorobjects; public: bool OnUserCreate() override @@ -728,13 +743,12 @@ public: dot = new Decal(new Sprite("assets/dot.png")); enemy_ShootMe_tex = new Decal(new Sprite("assets/enemies/ShootMe.png")); + Mesh testEnemy("assets/enemies/ShootMe.obj", enemy_ShootMe_tex); mapMesh.texture = dot; - - mesh testEnemy; - testEnemy.LoadFromObjectFile("assets/enemies/ShootMe.obj"); - testEnemy.texture = enemy_ShootMe_tex; - - objects.push_back(testEnemy); + for (int i = 0; i < 75; i++) { + Object newEnemy({ testEnemy,{ float(rand() % 20),float(rand() % 20) }, (rand() % 1000) / 1000.f * 2 * PI }); + objects.push_back(newEnemy); + } for (int y = 0; y < MAP_SIZE.y; y++) { std::vectorrow; @@ -830,7 +844,9 @@ public: bool OnUserUpdate(float fElapsedTime) override { - objects[0].rot += PI / 8 * fElapsedTime; + for (Object& o : objects) { + o.rot += PI / 8 * fElapsedTime; + } HandleKeys(fElapsedTime); RenderWorld(); return true;