Edit

kc3-lang/kubz/types.h

Branch :

  • types.h
  • /* 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 */