Return to 2D.
This commit is contained in:
110
src/gen.c
110
src/gen.c
@@ -1,28 +1,90 @@
|
|||||||
#include "include/gen.h"
|
#include "include/gen.h"
|
||||||
#include "include/col.h"
|
#include "include/col.h"
|
||||||
#include "include/vol.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
Vec2 asth[WORLD_SZ][WORLD_SZ] = {
|
||||||
#include <stdlib.h>
|
{
|
||||||
#include <time.h>
|
(Vec2){.x = 1, .y = 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
(Vec2){1, 2},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
void gen(void) {
|
Plate lith[2] = {
|
||||||
srand((unsigned int)time(NULL));
|
(Plate){COL_BLU, 4, {(Pt){0, 0}, (Pt){4, 0}, (Pt){0, 8}, (Pt){4, 8}}},
|
||||||
|
(Plate){COL_RED, 4, {(Pt){4, 0}, (Pt){8, 0}, (Pt){8, 8}, (Pt){4, 8}}}
|
||||||
for (int x = 0; x < VOL_WIDTH; x++) {
|
};
|
||||||
for (int y = 0; y < VOL_HEIGHT; y++) {
|
|
||||||
for (int z = 0; z < VOL_DEPTH; z++) {
|
|
||||||
int r = rand() % 4;
|
|
||||||
switch (r) {
|
|
||||||
case 0: vol_set_pt(x, y, z, COL_WHT); break;
|
|
||||||
case 1: vol_set_pt(x, y, z, COL_GRY); break;
|
|
||||||
case 2: vol_set_pt(x, y, z, COL_GRN); break;
|
|
||||||
case 3: vol_set_pt(x, y, z, COL_BLU); break;
|
|
||||||
default: vol_set_pt(x, y, z, COL_MAG);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Volume initialized.\n");
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
|
|
||||||
// An RGB color.
|
// An RGB color.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t r, g, b;
|
uint8_t r, g, b, a;
|
||||||
} Col;
|
} Col;
|
||||||
|
|
||||||
#define COL_WHT (Col) {255, 255, 255}
|
#define COL_WHT (Col) {255, 255, 255, 255}
|
||||||
#define COL_GRY (Col) {127, 127, 127}
|
#define COL_GRY (Col) {127, 127, 127, 255}
|
||||||
#define COL_BLK (Col) {0, 0, 0}
|
#define COL_BLK (Col) {0, 0, 0, 255}
|
||||||
#define COL_RED (Col) {255, 0, 0}
|
#define COL_RED (Col) {255, 0, 0, 255}
|
||||||
#define COL_GRN (Col) {0, 255, 0}
|
#define COL_GRN (Col) {0, 255, 0, 255}
|
||||||
#define COL_BLU (Col) {0, 0, 255}
|
#define COL_BLU (Col) {0, 0, 255, 255}
|
||||||
#define COL_MAG (Col) {255, 127, 255}
|
#define COL_MAG (Col) {255, 127, 255, 255}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,37 @@
|
|||||||
#ifndef GEN_H
|
#ifndef GEN_H
|
||||||
#define GEN_H
|
#define GEN_H
|
||||||
|
|
||||||
|
#include "col.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define WORLD_SZ 8
|
||||||
|
|
||||||
|
// A two dimensional vector.
|
||||||
|
typedef struct {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
} Vec2;
|
||||||
|
|
||||||
|
// A point on the world.
|
||||||
|
typedef struct {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
} Pt;
|
||||||
|
|
||||||
|
// A plate; contains a list of points on the world representing the plate's
|
||||||
|
// vertices.
|
||||||
|
typedef struct {
|
||||||
|
Col col; // The color the plate should be drawn as.
|
||||||
|
uint8_t nverts; // The number of vertices the plate has.
|
||||||
|
Pt verts[4]; // The vertices of the plate.
|
||||||
|
} Plate;
|
||||||
|
|
||||||
|
// The asthenosphere; contains a grid of force vectors.
|
||||||
|
extern Vec2 asth[WORLD_SZ][WORLD_SZ];
|
||||||
|
// The lithosphere; contians a list of plates.
|
||||||
|
extern Plate lith[2];
|
||||||
|
|
||||||
void gen(void);
|
void gen(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
#ifndef MC_H
|
|
||||||
#define MC_H
|
|
||||||
|
|
||||||
// Marching cubes.
|
|
||||||
#include "col.h"
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <raylib.h>
|
|
||||||
|
|
||||||
// A cube configuration to be marched upon.
|
|
||||||
typedef Col Cube[8];
|
|
||||||
|
|
||||||
extern Mesh mesh;
|
|
||||||
|
|
||||||
// Calculate the index in the lookup table for a `Cube`.
|
|
||||||
int mc_cubeidx(Cube* c);
|
|
||||||
|
|
||||||
// Convert volume to mesh.
|
|
||||||
void mc_march(int idx);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,267 +0,0 @@
|
|||||||
#ifndef MC_TRI_H
|
|
||||||
#define MC_TRI_H
|
|
||||||
|
|
||||||
#define MC_TRI_EDGES 16
|
|
||||||
|
|
||||||
// Lookup table for triangle positions. From
|
|
||||||
// [https://paulbourke.net/geometry/polygonise].
|
|
||||||
int mc_tri[256][16] = {
|
|
||||||
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1},
|
|
||||||
{8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1},
|
|
||||||
{3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1},
|
|
||||||
{4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1},
|
|
||||||
{4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1},
|
|
||||||
{9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1},
|
|
||||||
{10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1},
|
|
||||||
{5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1},
|
|
||||||
{5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1},
|
|
||||||
{8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1},
|
|
||||||
{2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1},
|
|
||||||
{2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1},
|
|
||||||
{11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1},
|
|
||||||
{5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1},
|
|
||||||
{11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1},
|
|
||||||
{11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1},
|
|
||||||
{2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1},
|
|
||||||
{6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1},
|
|
||||||
{3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1},
|
|
||||||
{6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1},
|
|
||||||
{6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1},
|
|
||||||
{8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1},
|
|
||||||
{7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1},
|
|
||||||
{3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1},
|
|
||||||
{9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1},
|
|
||||||
{8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1},
|
|
||||||
{5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1},
|
|
||||||
{0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1},
|
|
||||||
{6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1},
|
|
||||||
{10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1},
|
|
||||||
{1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1},
|
|
||||||
{0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1},
|
|
||||||
{3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1},
|
|
||||||
{6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1},
|
|
||||||
{9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1},
|
|
||||||
{8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1},
|
|
||||||
{3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1},
|
|
||||||
{10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1},
|
|
||||||
{10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1},
|
|
||||||
{2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1},
|
|
||||||
{7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1},
|
|
||||||
{2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1},
|
|
||||||
{1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1},
|
|
||||||
{11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1},
|
|
||||||
{8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1},
|
|
||||||
{0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1},
|
|
||||||
{7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1},
|
|
||||||
{7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1},
|
|
||||||
{10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1},
|
|
||||||
{0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1},
|
|
||||||
{7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1},
|
|
||||||
{6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1},
|
|
||||||
{4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1},
|
|
||||||
{10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1},
|
|
||||||
{8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1},
|
|
||||||
{1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1},
|
|
||||||
{10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1},
|
|
||||||
{10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1},
|
|
||||||
{9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1},
|
|
||||||
{7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1},
|
|
||||||
{3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1},
|
|
||||||
{7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1},
|
|
||||||
{3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1},
|
|
||||||
{6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1},
|
|
||||||
{9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1},
|
|
||||||
{1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1},
|
|
||||||
{4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1},
|
|
||||||
{7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1},
|
|
||||||
{6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1},
|
|
||||||
{0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1},
|
|
||||||
{6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1},
|
|
||||||
{0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1},
|
|
||||||
{11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1},
|
|
||||||
{6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1},
|
|
||||||
{5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1},
|
|
||||||
{9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1},
|
|
||||||
{1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1},
|
|
||||||
{10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1},
|
|
||||||
{0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1},
|
|
||||||
{11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1},
|
|
||||||
{9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1},
|
|
||||||
{7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1},
|
|
||||||
{2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1},
|
|
||||||
{9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1},
|
|
||||||
{9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1},
|
|
||||||
{1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1},
|
|
||||||
{0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1},
|
|
||||||
{10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1},
|
|
||||||
{2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1},
|
|
||||||
{0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1},
|
|
||||||
{0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1},
|
|
||||||
{9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1},
|
|
||||||
{5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1},
|
|
||||||
{5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1},
|
|
||||||
{8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1},
|
|
||||||
{9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1},
|
|
||||||
{1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1},
|
|
||||||
{3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1},
|
|
||||||
{4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1},
|
|
||||||
{9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1},
|
|
||||||
{11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1},
|
|
||||||
{2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1},
|
|
||||||
{9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1},
|
|
||||||
{3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1},
|
|
||||||
{1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1},
|
|
||||||
{4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1},
|
|
||||||
{0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1},
|
|
||||||
{1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
|
||||||
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#ifndef MESH_H
|
|
||||||
#define MESH_H
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#ifndef PT_H
|
|
||||||
#define PT_H
|
|
||||||
|
|
||||||
#include "col.h"
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
// A point.
|
|
||||||
typedef struct {
|
|
||||||
Col col;
|
|
||||||
} Pt;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,8 +1,11 @@
|
|||||||
#ifndef RENDER_H
|
#ifndef RENDER_H
|
||||||
#define RENDER_H
|
#define RENDER_H
|
||||||
|
|
||||||
|
#include "gen.h"
|
||||||
|
|
||||||
#define SCREEN_WIDTH 800
|
#define SCREEN_WIDTH 800
|
||||||
#define SCREEN_HEIGHT 600
|
#define SCREEN_HEIGHT 800
|
||||||
|
#define CELL_SZ (SCREEN_WIDTH / WORLD_SZ)
|
||||||
|
|
||||||
void render(void);
|
void render(void);
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
#ifndef VOL_H
|
|
||||||
#define VOL_H
|
|
||||||
|
|
||||||
#include "pt.h"
|
|
||||||
#include "col.h"
|
|
||||||
|
|
||||||
#define VOL_SZ 8
|
|
||||||
#define VOL_WIDTH VOL_SZ
|
|
||||||
#define VOL_HEIGHT VOL_SZ
|
|
||||||
#define VOL_DEPTH VOL_SZ
|
|
||||||
|
|
||||||
// The volume in which our points may be found.
|
|
||||||
extern Pt volume[VOL_WIDTH][VOL_HEIGHT][VOL_DEPTH];
|
|
||||||
|
|
||||||
void vol_set_pt(int x, int y, int z, Col col);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
16
src/main.c
16
src/main.c
@@ -1,16 +1,22 @@
|
|||||||
#include "include/main.h"
|
#include "include/main.h"
|
||||||
|
|
||||||
#include "include/gen.h"
|
|
||||||
#include "include/render.h"
|
#include "include/render.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <raylib.h>
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
printf("Hello, world.\n");
|
InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Terrin");
|
||||||
|
SetTargetFPS(110);
|
||||||
|
|
||||||
gen();
|
while (!WindowShouldClose()) {
|
||||||
|
BeginDrawing();
|
||||||
|
ClearBackground(BLACK);
|
||||||
|
|
||||||
render();
|
render();
|
||||||
|
|
||||||
|
EndDrawing();
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseWindow();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
20
src/mc.c
20
src/mc.c
@@ -1,20 +0,0 @@
|
|||||||
#include "include/mc.h"
|
|
||||||
|
|
||||||
#include "include/mc_tri.h"
|
|
||||||
|
|
||||||
Mesh mesh;
|
|
||||||
|
|
||||||
int mc_cubeidx(Cube* c) {
|
|
||||||
int index = 0;
|
|
||||||
for (int i = 0; i < 8; i++) {
|
|
||||||
if ((*c)[i].r) { index |= 1 << i; }
|
|
||||||
}
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO.
|
|
||||||
void mc_march(int idx) {
|
|
||||||
int* tri = mc_tri[idx];
|
|
||||||
for (int i = 0; i < 16; i++) {}
|
|
||||||
}
|
|
||||||
84
src/render.c
84
src/render.c
@@ -1,51 +1,59 @@
|
|||||||
#include "include/render.h"
|
#include "include/render.h"
|
||||||
|
#include "include/gen.h"
|
||||||
#include "include/vol.h"
|
|
||||||
|
|
||||||
#include <raylib.h>
|
#include <raylib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
void render(void) {
|
Vector2 PointToVector2(Pt p) {
|
||||||
InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Terrin");
|
Vector2 v;
|
||||||
|
v.x = (float)p.x * CELL_SZ;
|
||||||
|
v.y = (float)p.y * CELL_SZ;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
Camera3D cam = {0};
|
void render() {
|
||||||
cam.position =
|
for (int i = 0; i < 2; i++) {
|
||||||
(Vector3){VOL_WIDTH / 2.f, VOL_HEIGHT * .75f, VOL_DEPTH / 2.f};
|
Plate plate = lith[i];
|
||||||
cam.target = (Vector3){0, 0, 0};
|
|
||||||
cam.up = (Vector3){0.0f, 1.0f, 0.0f};
|
|
||||||
cam.fovy = 70.f;
|
|
||||||
cam.projection = CAMERA_PERSPECTIVE;
|
|
||||||
|
|
||||||
SetTargetFPS(110);
|
// Skip plates with less than 3 vertices (can't form a polygon).
|
||||||
|
if (plate.nverts < 3) continue;
|
||||||
|
|
||||||
while (!WindowShouldClose()) {
|
// Convert the vertices from world coordinates (Pt) to screen
|
||||||
UpdateCamera(&cam, CAMERA_FREE);
|
// coordinates (Vector2).
|
||||||
|
Vector2 screen_verts[4];
|
||||||
BeginDrawing();
|
for (int j = 0; j < plate.nverts; j++) {
|
||||||
|
screen_verts[j] = PointToVector2(plate.verts[j]);
|
||||||
ClearBackground((Color){0, 0, 0, 0});
|
|
||||||
|
|
||||||
BeginMode3D(cam);
|
|
||||||
|
|
||||||
for (int x = 0; x < VOL_WIDTH; x++) {
|
|
||||||
for (int y = 0; y < VOL_HEIGHT; y++) {
|
|
||||||
for (int z = 0; z < VOL_DEPTH; z++) {
|
|
||||||
|
|
||||||
Pt v = volume[x][y][z];
|
|
||||||
|
|
||||||
DrawSphere(
|
|
||||||
(Vector3){(float)x, (float)y, (float)z}, 0.2f,
|
|
||||||
(Color){v.col.r, v.col.g, v.col.b, 255}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EndMode3D();
|
if (plate.nverts == 3) {
|
||||||
|
DrawTriangle(
|
||||||
|
screen_verts[0], screen_verts[1], screen_verts[2],
|
||||||
|
(Color){plate.col.r, plate.col.g, plate.col.b, plate.col.a}
|
||||||
|
);
|
||||||
|
|
||||||
DrawFPS(10, 10);
|
} else if (plate.nverts == 4) {
|
||||||
|
// Draw a quadrilateral (split into two triangles for filling)
|
||||||
|
// Triangle 1: V0, V1, V2
|
||||||
|
DrawTriangle(
|
||||||
|
screen_verts[0], screen_verts[1], screen_verts[2],
|
||||||
|
(Color){plate.col.r, plate.col.g, plate.col.b, plate.col.a}
|
||||||
|
|
||||||
EndDrawing();
|
);
|
||||||
|
// Triangle 2: V0, V2, V3 (Uses V0 and V2 as the base diagonal)
|
||||||
|
DrawTriangle(
|
||||||
|
screen_verts[0], screen_verts[2], screen_verts[3],
|
||||||
|
(Color){plate.col.r, plate.col.g, plate.col.b, plate.col.a}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// OPTIONAL: Draw the plate outline to make it clearer
|
||||||
|
/*
|
||||||
|
for (int j = 0; j < plate.nverts; j++) {
|
||||||
|
Vector2 p1 = screen_verts[j];
|
||||||
|
Vector2 p2 =
|
||||||
|
screen_verts[(j + 1) % plate.nverts]; // Loop back to the first
|
||||||
|
// point
|
||||||
|
DrawLineV(p1, p2, BLACK);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseWindow();
|
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/vol.c
12
src/vol.c
@@ -1,12 +0,0 @@
|
|||||||
#include "include/vol.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
Pt volume[VOL_WIDTH][VOL_HEIGHT][VOL_DEPTH];
|
|
||||||
|
|
||||||
void vol_set_pt(int x, int y, int z, Col col) {
|
|
||||||
if (x >= 0 && x < VOL_WIDTH && y >= 0 && y < VOL_HEIGHT && z >= 0 &&
|
|
||||||
z < VOL_DEPTH)
|
|
||||||
volume[x][y][z].col = col;
|
|
||||||
else exit(1);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user