Branch :
/* kc3
* Copyright 2022,2023,2024 kmx.io <contact@kmx.io>
*
* Permission is hereby granted to use this software granted the above
* copyright notice and this permission paragraph are included in all
* copies and substantial portions of this software.
*
* THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
* PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
* AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
* THIS SOFTWARE.
*/
/** @file types.h
* @brief Module KC3.Window.SDL2.Kubz
*
* Types for Kubz virtual world
*/
#ifndef KUBZ_TYPES_H
#define KUBZ_TYPES_H
#include <libkc3/types.h>
#include "../types.h"
/* Basic types. */
typedef f128 t_koord;
/* Structs. */
typedef struct gl_marching_cube_cell s_gl_marching_cube_cell;
typedef struct gl_marching_cubes s_gl_marching_cubes;
typedef struct kub s_kub;
typedef struct kubz s_kubz;
/* Enums. */
typedef enum {
CONSOLE_CLOSE,
CONSOLE_OPEN
} e_console_state;
typedef enum {
KOORD_X0 = 0,
KOORD_Y0 = 1,
KOORD_Z0 = 2,
KOORD_X1 = 3,
KOORD_Y1 = 4,
KOORD_Z1 = 5,
KOORD_MAX = 6
} e_koord;
/* 1 */
struct gl_marching_cube_cell {
s_vec3 vec3[8];
f32 value[8];
};
struct gl_marching_cubes {
s_gl_object object;
uw triangle_count;
u32 dimension[3];
s_vec3 size;
f32 * field;
f32 threshold;
};
struct kub {
s_kub *kub[8];
t_koord koord[KOORD_MAX];
};
struct kubz {
s_kub kub;
s_str name;
s_list *menu;
const s_sym *id;
};
#endif /* KUBZ_TYPES_H */