minimal + export
This commit is contained in:
parent
b1c8be9dd6
commit
b568b16322
5 changed files with 325 additions and 2 deletions
|
|
@ -1,9 +1,13 @@
|
|||
#ifndef DEFINE_H
|
||||
#define DEFINE_H
|
||||
|
||||
// #define MINIMAL_PLAYER
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#ifndef MINIMAL_PLAYER
|
||||
#include <math.h> // Uniquement nécessaire pour la génération
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
|
|
|
|||
|
|
@ -9,12 +9,14 @@ void mat3_identity(Matrix3 *mat) {
|
|||
}
|
||||
|
||||
void init_engine_math(void) {
|
||||
#ifndef MINIMAL_PLAYER
|
||||
int i;
|
||||
for (i = 0; i < 360; i++) {
|
||||
double r = (double)i * 3.14159265 / 180.0;
|
||||
sintab[i] = (fixed)(sin(r) * 65536.0);
|
||||
costab[i] = (fixed)(cos(r) * 65536.0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void mat3_mul(Matrix3 *res, Matrix3 *a, Matrix3 *b) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#include "defines.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef MINIMAL_PLAYER
|
||||
static void push_face(Universe *uni, Object3D *obj, int a, int b, int c, uint8_t wire) {
|
||||
Face *f = &uni->faces[uni->num_faces++];
|
||||
f->a = a; f->b = b; f->c = c;
|
||||
|
|
@ -486,3 +488,64 @@ void free_mesh(Mesh *m) {
|
|||
free(m->faces);
|
||||
free(m);
|
||||
}
|
||||
|
||||
void export_universe_to_c(Universe *uni, const char *filename) {
|
||||
int i;
|
||||
FILE *f = fopen(filename, "w");
|
||||
if (!f) return;
|
||||
|
||||
|
||||
fprintf(f, "#ifndef EXPORTED_DATA_H\n#define EXPORTED_DATA_H\n\n#include \"defines.h\"\n\n");
|
||||
|
||||
// 1. Tables trigonométriques
|
||||
fprintf(f, "fixed sintab[360] = {");
|
||||
for(i=0; i<360; i++) fprintf(f, "%d%s", sintab[i], i<359?", ":"");
|
||||
fprintf(f, "};\n\nfixed costab[360] = {");
|
||||
for(i=0; i<360; i++) fprintf(f, "%d%s", costab[i], i<359?", ":"");
|
||||
fprintf(f, "};\n\n");
|
||||
|
||||
// 2. Vertices et Normales
|
||||
fprintf(f, "Vector3 uni_verts[%d] = {\n", uni->num_verts);
|
||||
for(i=0; i<uni->num_verts; i++) fprintf(f, " {%d, %d, %d}%s\n", uni->verts[i].x, uni->verts[i].y, uni->verts[i].z, i<uni->num_verts-1?",":"");
|
||||
fprintf(f, "};\n\n");
|
||||
|
||||
fprintf(f, "Vector3 uni_normals[%d] = {\n", uni->num_verts);
|
||||
for(i=0; i<uni->num_verts; i++) fprintf(f, " {%d, %d, %d}%s\n", uni->v_normals[i].x, uni->v_normals[i].y, uni->v_normals[i].z, i<uni->num_verts-1?",":"");
|
||||
fprintf(f, "};\n\n");
|
||||
|
||||
// 3. Faces
|
||||
fprintf(f, "Face uni_faces[%d] = {\n", uni->num_faces);
|
||||
for(i=0; i<uni->num_faces; i++) fprintf(f, " {%d, %d, %d, %d}%s\n", uni->faces[i].a, uni->faces[i].b, uni->faces[i].c, uni->faces[i].force_wire, i<uni->num_faces-1?",":"");
|
||||
fprintf(f, "};\n\n");
|
||||
|
||||
// 4. Objets
|
||||
fprintf(f, "Object3D uni_objects[%d] = {\n", uni->num_objects);
|
||||
for(i=0; i<uni->num_objects; i++) {
|
||||
Object3D *o = &uni->objects[i];
|
||||
fprintf(f, " { %d, %d, %d, %d, ", o->vert_start, o->num_verts, o->face_start, o->num_faces);
|
||||
fprintf(f, "{%d,%d,%d}, {%d,%d,%d}, ", o->pos.x, o->pos.y, o->pos.z, o->base_pos.x, o->base_pos.y, o->base_pos.z);
|
||||
// Matrice identité par défaut ou état actuel
|
||||
fprintf(f, "{{{%d,%d,%d},{%d,%d,%d},{%d,%d,%d}}}, %d }%s\n",
|
||||
o->rot.m[0][0], o->rot.m[0][1], o->rot.m[0][2],
|
||||
o->rot.m[1][0], o->rot.m[1][1], o->rot.m[1][2],
|
||||
o->rot.m[2][0], o->rot.m[2][1], o->rot.m[2][2], o->color, i<uni->num_objects-1?",":"");
|
||||
}
|
||||
fprintf(f, "};\n\n");
|
||||
|
||||
// 5. Structure Universe globale
|
||||
fprintf(f, "Universe static_universe = {\n");
|
||||
fprintf(f, " {0}, {0}, {0}, %d, %d, {0}, %d\n};\n\n", uni->num_verts, uni->num_faces, uni->num_objects);
|
||||
|
||||
fprintf(f, "void load_static_universe(Universe *u) {\n");
|
||||
fprintf(f, " memcpy(u->verts, uni_verts, sizeof(uni_verts));\n");
|
||||
fprintf(f, " memcpy(u->v_normals, uni_normals, sizeof(uni_normals));\n");
|
||||
fprintf(f, " memcpy(u->faces, uni_faces, sizeof(uni_faces));\n");
|
||||
fprintf(f, " memcpy(u->objects, uni_objects, sizeof(uni_objects));\n");
|
||||
fprintf(f, " u->num_verts = %d; u->num_faces = %d; u->num_objects = %d;\n", uni->num_verts, uni->num_faces, uni->num_objects);
|
||||
fprintf(f, "}\n\n");
|
||||
|
||||
fprintf(f, "#endif\n");
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
#endif /* MINIMAL_PLAYER */
|
||||
|
|
|
|||
Loading…
Reference in a new issue