From db730f01951231196cac36630d043c7a3676d446 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 19 Nov 2023 04:11:46 +0900 Subject: Finish porting model handling to Zig --- src/Models.cpp | 108 --------------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 src/Models.cpp (limited to 'src/Models.cpp') diff --git a/src/Models.cpp b/src/Models.cpp deleted file mode 100644 index bc0b4d2..0000000 --- a/src/Models.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include - -#include "Models.h" -#include "misc.h" - -extern bool visions; - -void Model::CalculateNormals() -{ - for (int i = 0; i < TriangleNum; ++i) - normals[i] = normalize(crossProduct(vertex[Triangles[i].vertex[1]] - - vertex[Triangles[i].vertex[0]], - vertex[Triangles[i].vertex[2]] - - vertex[Triangles[i].vertex[0]])); - - for (int i = 0; i < TriangleNum; ++i) { - vArray[i*27+0]=vertex[Triangles[i].vertex[0]].x; - vArray[i*27+1]=vertex[Triangles[i].vertex[0]].y; - vArray[i*27+2]=vertex[Triangles[i].vertex[0]].z; - vArray[i*27+3]=normals[i].x; - vArray[i*27+4]=normals[i].y; - vArray[i*27+5]=normals[i].z; - vArray[i*27+6]=Triangles[i].r; - vArray[i*27+7]=Triangles[i].g; - vArray[i*27+8]=Triangles[i].b; - - vArray[i*27+9]=vertex[Triangles[i].vertex[1]].x; - vArray[i*27+10]=vertex[Triangles[i].vertex[1]].y; - vArray[i*27+11]=vertex[Triangles[i].vertex[1]].z; - vArray[i*27+12]=normals[i].x; - vArray[i*27+13]=normals[i].y; - vArray[i*27+14]=normals[i].z; - vArray[i*27+15]=Triangles[i].r; - vArray[i*27+16]=Triangles[i].g; - vArray[i*27+17]=Triangles[i].b; - - vArray[i*27+18]=vertex[Triangles[i].vertex[2]].x; - vArray[i*27+19]=vertex[Triangles[i].vertex[2]].y; - vArray[i*27+20]=vertex[Triangles[i].vertex[2]].z; - vArray[i*27+21]=normals[i].x; - vArray[i*27+22]=normals[i].y; - vArray[i*27+23]=normals[i].z; - vArray[i*27+24]=Triangles[i].r; - vArray[i*27+25]=Triangles[i].g; - vArray[i*27+26]=Triangles[i].b; - } - - this->center = {}; - for (int i = 0; i < vertexNum; ++i) - this->center += vertex[i]; - this->center /= vertexNum; - - this->radius = 0; - for (int i = 0; i < vertexNum; ++i) - this->radius = std::max(this->radius, - sqrlen(this->center - vertex[i])); - this->radius = sqrt(this->radius); -} - -void Model::load(const char* path) -{ - auto model = loadModel(path); - vertexNum = model.vertices.len; - for (short i = 0; i < vertexNum; ++i) { - vertex[i].x = model.vertices.ptr[i].x; - vertex[i].y = model.vertices.ptr[i].y; - vertex[i].z = model.vertices.ptr[i].z; - } - free(model.vertices.ptr); - - TriangleNum = model.faces.len; - for (short i = 0; i < TriangleNum; ++i) { - Triangles[i].vertex[0] = model.faces.ptr[i].v[0]; - Triangles[i].vertex[1] = model.faces.ptr[i].v[1]; - Triangles[i].vertex[2] = model.faces.ptr[i].v[2]; - Triangles[i].r = model.faces.ptr[i].r; - Triangles[i].g = model.faces.ptr[i].g; - Triangles[i].b = model.faces.ptr[i].b; - } - free(model.faces.ptr); - CalculateNormals(); -} - -void Model::draw() -{ - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - glVertexPointer(3, GL_FLOAT, 9*sizeof(GLfloat),&vArray[0]); - glNormalPointer(GL_FLOAT, 9*sizeof(GLfloat),&vArray[3]); - if (visions) - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - else - glColorPointer(3, GL_FLOAT, 9*sizeof(GLfloat), &vArray[6]); - glDrawArrays(GL_TRIANGLES, 0, TriangleNum*3); -} - -void Model::draw(float r, float g, float b) -{ - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - glVertexPointer(3, GL_FLOAT, 9*sizeof(GLfloat),&vArray[0]); - glNormalPointer(GL_FLOAT, 9*sizeof(GLfloat),&vArray[3]); - glColor4f(r, g, b, 1.0f); - glDrawArrays(GL_TRIANGLES, 0, TriangleNum*3); -} -- cgit 1.4.1