1v13d/src/main.c

255 lines
6.5 KiB
C

/*
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/std/stdio.h>
#include <gint/std/stdlib.h>
#include <gint/clock.h>
#include <fxengine/point.h>
*/
/*
int main(void)
{
//init_controls();
dclear(C_WHITE);
fe_integer_point point[4]={{{10,0,0},{0,0,0}},{{10,10,0},{0,0,0}},{{10,0,10},{0,0,0}},{{10,10,10},{0,0,0}}};
//FE_face face={&point[0],&point[1],&point[2],1,2};
//FE_face face2={&point[3],&point[1],&point[2],0,2};
while (1)
{
//FE_new_frame();
dclear(C_WHITE);
//reload_fps_displaying();
for (int i=0;i<4;i++)
{
fe_point_translate(&point[i]);
if (point[i].translated.z>0)
{
dpixel(point[i].translated.x,point[i].translated.y,C_BLACK);
}
}
dupdate();
//FE_draw_face(&face);
//FE_draw_face(&face2);
//display_fps(100,56);
}
getkey();
return 1;
}
*/
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/std/stdio.h>
#include <gint/std/stdlib.h>
#include <gint/clock.h>
#include <fxengine/camera.h>
#include <fxengine/object.h>
#include <fxengine/fxengine.h>
#include <liblog.h>
int main(void)
{
fe_custom_panic();
//init_controls();
dclear(C_WHITE);
//render_integer_point point[4]={{{10,0,0},{0,0,0}},{{10,10,0},{0,0,0}},{{10,0,10},{0,0,0}},{{10,10,10},{0,0,0}}};
//FE_face face={&point[0],&point[1],&point[2],1,2};
//FE_face face2={&point[3],&point[1],&point[2],0,2};
uint32_t color[32] =
{
0b11111111111111111111111111111111,
0b11111111111111111111111111111111,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11111111111111000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11000000000000000000000000000011,
0b11111111111111111111111111111111,
0b11111111111111111111111111111111
};
fe_texture_rich * bmp = fe_texture_new_rich(32, 32, color, 0, 0, 0);
//fe_texture_debug(bmp);
fe_ivertex v[4]=
{
{
{300,-100,-100},
{0,0,0}
},
{
{30,100,100},
{0,0,0}
},
{
{300,-100,100},
{0,0,0}
},
{
{300,100,-100},
{0,0,0}
}
};
fe_object object;
fe_object_init(&object);
fe_object_set_points(&object, &v, 4, 0);
fe_triangle triangle =
{
{
fe_object_get_vertex(&object, 0),
fe_object_get_vertex(&object, 1),
fe_object_get_vertex(&object, 2),
bmp,
1,
0
},
{
fe_object_get_vertex(&object, 0),
fe_object_get_vertex(&object, 1),
fe_object_get_vertex(&object, 3),
bmp,
0,
0
}
};
fe_object_set_faces(&object, &triangle, 2, 0);
bool state=1;
//fe_object_debug(&object);
fe_camera cam = {{0,0,0},{0,0,0},0,0,0};
while (1)
{
label:;
key_event_t event = pollevent();
if (event.type!=KEYEV_NONE)
{
//ll_log(str);
if (event.key == KEY_LEFT)
cam.dh -= 0.01;
if (event.key == KEY_RIGHT)
cam.dh += 0.01;
cam.dh = fe_modulo_2pi(cam.dh);
if (event.key == KEY_UP)
cam.dv += 0.01;
if (event.key == KEY_DOWN)
cam.dv -= 0.01;
cam.dv = fe_modulo_2pi(cam.dv);
if (event.key == KEY_8)
{
cam.pos.x = cam.pos.x + (int32_t)(5*fe_sin(cam.dh));
cam.pos.y = cam.pos.y + (int32_t)(5*fe_cos(cam.dh));
}
if (event.key == KEY_2)
{
cam.pos.x = cam.pos.x + (int32_t)(5*fe_sin(cam.dh+pi));
cam.pos.y = cam.pos.y + (int32_t)(5*fe_cos(cam.dh+pi));
}
if (event.key == KEY_6)
{
cam.pos.x = cam.pos.x + (int32_t)(5*fe_sin(cam.dh+pi_sur_2));
cam.pos.y = cam.pos.y + (int32_t)(5*fe_cos(cam.dh+pi_sur_2));
}
if (event.key == KEY_4)
{
cam.pos.x = cam.pos.x + (int32_t)(5*fe_sin(cam.dh-pi_sur_2));
cam.pos.y = cam.pos.y + (int32_t)(5*fe_cos(cam.dh-pi_sur_2));
}
cam.dv = fe_modulo_2pi(cam.dv);
if (event.key == KEY_EXIT)
break;
if (event.key==KEY_F1 && event.type==KEYEV_DOWN)
state = !state;
goto label;
}
fe_view_set(&cam);
fe_object_display(&object);
char str[1000];
/* sprintf(str, "S1 %d %d %d",
fe_object_get_vertex(&object, 0)->x,
fe_object_get_vertex(&object, 0)->y,
fe_object_get_vertex(&object, 0)->z);
fe_log(str);
sprintf(str, "S2 %d %d %d",
fe_object_get_vertex(&object, 1)->x,
fe_object_get_vertex(&object, 1)->y,
fe_object_get_vertex(&object, 1)->z);
fe_log(str);
sprintf(str, "S3 %d %d %d",
fe_object_get_vertex(&object, 2)->x,
fe_object_get_vertex(&object, 2)->y,
fe_object_get_vertex(&object, 2)->z);
*/
sprintf(str, "Camera Settings :\n>> x %d; y %d; z %d\n>> dh %d; dv %d",
cam.pos.x,
cam.pos.y,
cam.pos.z,
(int)(cam.dh*180/pi),
(int)(cam.dv*180/pi)
);
ll_log(str);
if (state)
{
fe_display(1);
}
else
{
fe_update(1);
ll_display_log();
}
}
return 1;
}