WIP: utilisation de set_arrow (weight, site, x, y, z) pour la lecture de l'état initial OK

This commit is contained in:
Jean Sirmai 2023-09-22 19:48:23 +02:00
parent 17f220dabd
commit 039e247bff
Signed by: jean
GPG Key ID: FB3115C340E057E3
1 changed files with 21 additions and 20 deletions

View File

@ -83,7 +83,7 @@ static void show_user_choices(int space_size_x,
i, *(arrows + i * 5 + 0), *(arrows + i * 5 + 1), *(arrows + i * 5 + 2), *(arrows + i * 5 + 3), *(arrows + i * 5 + 4));
if (arrows_nb > 0) printf(" -------------------------------\n");}
static int set_arrow (GLuint *arrows, int weight, int site, int x, int y, int z);
static int set_arrow (int weight, int site, int x, int y, int z);
static void get_model_data_and_user_preferences()
{
@ -106,8 +106,7 @@ static void get_model_data_and_user_preferences()
#define DETAIL 0
static bool rewrite_arrow (GLuint *arrows, int address, int weight,
int site, int x, int y, int z)
static bool rewrite_arrow (int address, int weight, int site, int x, int y, int z)
{
if (DETAIL) printf("write the arrow weight to %d at (%d, %d, %d, %d)\n",\
weight, site, x, y, z);
@ -117,7 +116,7 @@ static bool rewrite_arrow (GLuint *arrows, int address, int weight,
return 1; /* replaces the load of the existing arrow by the load 'weight' */
}
static bool create_arrow (GLuint *arrows, int weight, int site, int x, int y, int z)
static bool create_arrow (int weight, int site, int x, int y, int z)
{
int arrows_nb = get_arrows_nb();
arrows_nb ++;
@ -136,8 +135,7 @@ static bool create_arrow (GLuint *arrows, int weight, int site, int x, int y, in
return 1;
}
static bool erase_arrow (GLuint *arrows, int address,
int site, int x, int y, int z)
static bool erase_arrow (int address, int site, int x, int y, int z)
{
int arrows_nb = get_arrows_nb();
if (DETAIL) printf("erase arrow at address %d with values (%d, %d, %d, %d)",\
@ -162,7 +160,7 @@ static bool erase_arrow (GLuint *arrows, int address,
return 1;
}
static int check_for_arrow (GLuint *arrows, int site, int x, int y, int z)
static int check_for_arrow (int site, int x, int y, int z)
{
int arrows_nb = get_arrows_nb();
if (arrows_nb == 0) return -1;
@ -189,7 +187,7 @@ static int check_for_arrow (GLuint *arrows, int site, int x, int y, int z)
}
static void show_arrows_array (GLuint *arrows, int address, int weight, int site, int x, int y, int z)
static void show_arrows_array (int address, int weight, int site, int x, int y, int z)
{
int arrows_nb = get_arrows_nb();
printf("\n [ n] load | site x y z ----- < arrows_nb = %d > ------", arrows_nb);
@ -215,15 +213,15 @@ static void show_arrows_array (GLuint *arrows, int address, int weight, int site
}
static int set_arrow (GLuint *arrows, int weight, int site, int x, int y, int z)
static int set_arrow (int weight, int site, int x, int y, int z)
{
int address = (check_for_arrow (arrows, site, x, y, z));
show_arrows_array(arrows, address, weight, site, x, y, z);
int address = (check_for_arrow (site, x, y, z));
show_arrows_array(address, weight, site, x, y, z);
if (address == -1 && weight == 0) return 0;
if (address == -1 && weight > 0) return create_arrow (arrows, weight, site, x, y, z);
if (address >= 0 && weight == 0) return erase_arrow (arrows, address, site, x, y, z);
if (address >= 0 && weight > 0) return rewrite_arrow (arrows, address, weight, site, x, y, z);
if (address == -1 && weight > 0) return create_arrow (weight, site, x, y, z);
if (address >= 0 && weight == 0) return erase_arrow (address, site, x, y, z);
if (address >= 0 && weight > 0) return rewrite_arrow (address, weight, site, x, y, z);
return 0;
}
@ -764,7 +762,7 @@ bool graphics_shutdown(const void *gl_area)
void main_test_graphics (void)
{
long site = 0,
long weight = 0, site = 0,
x = model_space_size_x,
y = model_space_size_y,
z = model_space_size_z;
@ -795,12 +793,15 @@ void main_test_graphics (void)
int arrows_nb = get_arrows_nb();
for (int i = 0; i < arrows_nb; i++) {
weight = arrows[i * 5 + 0];
site = arrows[i * 5 + 1];
x = arrows[i * 5 + 2];
y = arrows[i * 5 + 3];
z = arrows[i * 5 + 4];
// cube coordinates = 12 * (stx * x + sty * y + stz * z);
set_arrow (weight, site, x, y, z);
/* // cube coordinates = 12 * (stx * x + sty * y + stz * z); */
arrow_offset = offset_after_grids + 12 * (stx * x + sty * y + stz * z);
arrows_write_basis (arrow_offset);