rename basic shader to character
add character shadow make animation play twice as fast when sprinting
This commit is contained in:
+24
-3
@@ -36,6 +36,7 @@ static SDL_Window *window;
|
||||
static R_Texture framebuffer;
|
||||
|
||||
static R_Texture player_texture;
|
||||
static R_Texture character_shadow_texture;
|
||||
static R_Texture tile_textures_atlas;
|
||||
static R_Texture tile_textures_atlas_imgui;
|
||||
|
||||
@@ -915,6 +916,12 @@ static bool init_resources() {
|
||||
return false;
|
||||
}
|
||||
|
||||
character_shadow_texture = create_texture("characters/shadow.png");
|
||||
if (!character_shadow_texture) {
|
||||
log_error("Failed to create shader texture.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!recreate_tile_textures()) {
|
||||
log_error("Failed to create tile textures.");
|
||||
return false;
|
||||
@@ -1438,7 +1445,7 @@ static void update_state_game() {
|
||||
const bool *keyboard_state = SDL_GetKeyboardState(NULL);
|
||||
|
||||
if (player.is_moving) {
|
||||
player.animation_time += delta_time;
|
||||
player.animation_time += delta_time * (keyboard_state[SDL_SCANCODE_LSHIFT] ? 2 : 1);
|
||||
|
||||
vec2 leftover_movement = vec2(player.target_position) - player.visual_position;
|
||||
vec2 movement = clamp(min(vec2(0, 0), leftover_movement), normalize(leftover_movement) * (delta_t * character_speed * (keyboard_state[SDL_SCANCODE_LSHIFT] ? 2.0f : 1.0f)), max(vec2(0, 0), leftover_movement));
|
||||
@@ -1478,7 +1485,8 @@ static void render_game() {
|
||||
{
|
||||
ZoneScopedN("player_instance_buffer");
|
||||
|
||||
Uint64 variation_index = (player.animation_time / (100 * SDL_NS_PER_MS)) % 4;
|
||||
Uint64 ns_per_variation = (1.0f / (character_speed * 2)) * SDL_NS_PER_SECOND;
|
||||
Uint64 variation_index = (player.animation_time / (ns_per_variation)) % 4;
|
||||
|
||||
player_instance.pos = player.visual_position;
|
||||
player_instance.sprite_selection = variation_index << 16 | player.direction;
|
||||
@@ -1555,7 +1563,20 @@ static void render_game() {
|
||||
|
||||
{
|
||||
ZoneScopedN("Draw Player");
|
||||
renderer_frame_set_shader(R_SHADER_BASIC);
|
||||
renderer_frame_set_shader(R_SHADER_CHARACTER_SHADOW);
|
||||
renderer_frame_draw(vertex_buffer, index_buffer, player_instance_buffer, 6, 1, &(R_Draw_Resources){
|
||||
.vertex_uniform_buffers = (R_Buffer[]){ view_projection_matrix_buffer },
|
||||
|
||||
.num_vertex_uniform_buffers = 1,
|
||||
|
||||
.fragment_sampled_textures = (R_Texture[]){ character_shadow_texture },
|
||||
.fragment_uniform_buffers = (R_Buffer[]){ tint_color_buffer },
|
||||
|
||||
.num_fragment_sampled_textures = 1,
|
||||
.num_fragment_uniform_buffers = 1,
|
||||
});
|
||||
|
||||
renderer_frame_set_shader(R_SHADER_CHARACTER);
|
||||
renderer_frame_draw(vertex_buffer, index_buffer, player_instance_buffer, 6, 1, &(R_Draw_Resources){
|
||||
.vertex_uniform_buffers = (R_Buffer[]){ view_projection_matrix_buffer },
|
||||
|
||||
|
||||
Reference in New Issue
Block a user