fdf/src/map_movement.c
2017-03-15 11:23:05 +02:00

89 lines
No EOL
1.3 KiB
C

#include "fdf.h"
void move(t_FDF *FDF)
{
recalculate_trnsf_matrs(FDF->map);
mat4_mult_chain(FDF);
transform(FDF->map->trnsf->fin, FDF->map);
mlx_destroy_image(FDF->mw->mlx, FDF->image);
FDF->image = mlx_new_image(FDF->mw->mlx, WIDTH, HEIGHT);
FDF->image_data = mlx_get_data_addr(
FDF->image,
&FDF->bpp,
&FDF->line_size,
&FDF->endian);
render(FDF);
}
void left_rot(t_FDF *FDF)
{
FDF->map->y_rot -= 1;
move(FDF);
}
void right_rot(t_FDF *FDF)
{
FDF->map->y_rot += 1;
move(FDF);
}
void forw_rot(t_FDF *FDF)
{
FDF->map->x_rot += 1;
move(FDF);
}
void back_rot(t_FDF *FDF)
{
FDF->map->x_rot -= 1;
move(FDF);
}
void clock_rot(t_FDF *FDF)
{
FDF->map->z_rot -= 1;
move(FDF);
}
void aclock_rot(t_FDF *FDF)
{
FDF->map->z_rot += 1;
move(FDF);
}
void scale_up_z(t_FDF *FDF)
{
FDF->map->scale[2] += 1.0f / 100 * 20;
move(FDF);
}
void scale_down_z(t_FDF *FDF)
{
FDF->map->scale[2] -= 1.0f / 100 * 20;
move(FDF);
}
void zoom_in(t_FDF *FDF)
{
FDF->map->scale[0] += 1.0f / 100 * 20;
FDF->map->scale[1] += 1.0f / 100 * 20;
move(FDF);
}
void zoom_out(t_FDF *FDF)
{
FDF->map->scale[0] -= 1.0f / 100 * 20;
FDF->map->scale[1] -= 1.0f / 100 * 20;
move(FDF);
}
void reset(t_FDF *FDF)
{
FDF->map->z_rot = 0;
FDF->map->y_rot = 0;
FDF->map->x_rot = 0;
FDF->map->scale[0] = 1;
FDF->map->scale[1] = 1;
FDF->map->scale[2] = 1;
move(FDF);
}