summaryrefslogtreecommitdiff
path: root/src/geometry.h
blob: d15b8ae069354adc0b701a916324bb33d5186683 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#pragma once

#include <cglm/cglm.h>

#include "cglm/types.h"
#include "glad.h"
#include "utils.h"

struct quad_s {
  vec2 vertices[WAYC_QUAD_NVERTS];
  u32 indices[WAYC_QUAD_NINDICES];
};

static inline void wayc_quad_init(quad_s* quad, f32 left, f32 top, f32 right,
                                  f32 bottom) {
  wayc_notnull(quad);

  /*
    0 ---- 1
    |      |
    |      |
    3 ---- 2
  */

  // Vertices (CCW order)
  WAYC_X(quad->vertices[0]) = left;
  WAYC_Y(quad->vertices[0]) = top;

  WAYC_X(quad->vertices[1]) = right;
  WAYC_Y(quad->vertices[1]) = top;

  WAYC_X(quad->vertices[2]) = right;
  WAYC_Y(quad->vertices[2]) = bottom;

  WAYC_X(quad->vertices[3]) = left;
  WAYC_Y(quad->vertices[3]) = bottom;

  /*
    Triangles (CCW):
    0 1 2
    0 2 3
  */

  quad->indices[0] = 0;
  quad->indices[1] = 1;
  quad->indices[2] = 2;
  quad->indices[3] = 0;
  quad->indices[4] = 2;
  quad->indices[5] = 3;
}