Added a profiler.
This commit is contained in:
+39
-43
@@ -90,9 +90,6 @@ static void draw_rectangle(struct game_offscreen_buffer *buffer,
|
||||
if(max_y > height)
|
||||
max_y = height;
|
||||
|
||||
/*unsigned int color = (unsigned int)((round_float_to_int(r * 255.0f) << 16) |
|
||||
(round_float_to_int(g * 255.0f) << 8) |
|
||||
(round_float_to_int(b * 255.0f) << 0));*/
|
||||
color = (unsigned int)((round_float_to_int(255.0f) << 24) |
|
||||
(round_float_to_int(r * 255.0f) << 16) |
|
||||
(round_float_to_int(g * 255.0f) << 8) |
|
||||
@@ -337,19 +334,19 @@ static void move_player(struct game_state *game_state,
|
||||
tile_map = game_state->world->tile_map;
|
||||
|
||||
if((dd_player.x != 0.0f) && (dd_player.y != 0.0f))
|
||||
dd_player = V2Multiply(0.7071067811865475244f, dd_player);
|
||||
dd_player = v2_multiply(0.7071067811865475244f, dd_player);
|
||||
|
||||
player_speed = 10.0f;
|
||||
dd_player = V2Multiply(player_speed, dd_player);
|
||||
dd_player = v2_multiply(player_speed, dd_player);
|
||||
|
||||
dd_player = V2Add(dd_player, V2Unary(V2Multiply(1.5f, entity->dp)));
|
||||
dd_player = v2_add(dd_player, v2_unary(v2_multiply(1.5f, entity->dp)));
|
||||
|
||||
old_player_p = entity->p;
|
||||
new_player_p = old_player_p;
|
||||
player_delta = V2Add(V2Multiply(0.5f, V2Multiply(Square(dt), dd_player)),
|
||||
V2Multiply(dt, entity->dp));
|
||||
new_player_p.offset = V2Add(player_delta, new_player_p.offset);
|
||||
entity->dp = V2Add(V2Multiply(dt, dd_player), entity->dp);
|
||||
player_delta = v2_add(v2_multiply(0.5f, v2_multiply(square(dt), dd_player)),
|
||||
v2_multiply(dt, entity->dp));
|
||||
new_player_p.offset = v2_add(player_delta, new_player_p.offset);
|
||||
entity->dp = v2_add(v2_multiply(dt, dd_player), entity->dp);
|
||||
new_player_p = recannonicalize_position(tile_map, new_player_p);
|
||||
|
||||
{
|
||||
@@ -402,42 +399,44 @@ static void move_player(struct game_state *game_state,
|
||||
r.y = -1;
|
||||
}
|
||||
|
||||
entity->dp = V2Subtract(entity->dp,
|
||||
V2Multiply(1*InnerProduct(entity->dp, r), r));
|
||||
entity->dp = v2_subtract(entity->dp,
|
||||
v2_multiply(1*inner_product(entity->dp, r), r));
|
||||
} else {
|
||||
entity->p = new_player_p;
|
||||
}
|
||||
#else
|
||||
unsigned int MinTileX = 0;
|
||||
unsigned int MinTileY = 0;
|
||||
unsigned int OnePastMaxTileX = 0;
|
||||
unsigned int OnePastMaxTileY = 0;
|
||||
unsigned int abs_tile_z = game_state->PlayerP.abs_tile_z;
|
||||
tile_map_position BestPlayerP = game_state->PlayerP;
|
||||
F32 BestDistance = LengthSq(player_delta);
|
||||
for(unsigned int abs_tile_y = MinTileY;
|
||||
abs_tile_y != OnePastMaxTileY;
|
||||
unsigned int min_tile_x = 0;
|
||||
unsigned int min_tile_y = 0;
|
||||
unsigned int one_past_max_tile_x = 0;
|
||||
unsigned int one_past_max_tile_y = 0;
|
||||
unsigned int abs_tile_z = game_state->player_p.abs_tile_z;
|
||||
tile_map_position best_player_p = game_state->player_p;
|
||||
F32 best_distance = length_sq(player_delta);
|
||||
for(unsigned int abs_tile_y = min_tile_y;
|
||||
abs_tile_y != one_past_max_tile_y;
|
||||
abs_tile_y++)
|
||||
{
|
||||
for(unsigned int abs_tile_x = MinTileX;
|
||||
abs_tile_x != OnePastMaxTileX;
|
||||
for(unsigned int abs_tile_x = min_tile_x;
|
||||
abs_tile_x != one_past_max_tile_x;
|
||||
abs_tile_x++)
|
||||
{
|
||||
tile_map_position TestTileP =
|
||||
CenteredTilePoint(abs_tile_x, abs_tile_y, abs_tile_z);
|
||||
unsigned int TileValue = get_tile_value_by_pos(tile_map, TestTileP);
|
||||
if(IsTileValueEmpty(TileValue)) {
|
||||
v2 MinCorner = V2Multiply(-0.5f,
|
||||
tile_map_position test_tile_p =
|
||||
centered_tile_point(abs_tile_x, abs_tile_y, abs_tile_z);
|
||||
unsigned int tile_value =
|
||||
get_tile_value_by_pos(tile_map, test_tile_p);
|
||||
if(is_tile_value_empty(tile_value)) {
|
||||
v2 min_corner = v2_multiply(-0.5f,
|
||||
(v2){ tile_map->tile_side_in_meters,
|
||||
tile_map->tile_side_in_meters });
|
||||
v2 MaxCorner = V2Multiply(-0.5f,
|
||||
v2 max_corner = v2_multiply(-0.5f,
|
||||
(v2){ tile_map->tile_side_in_meters,
|
||||
tile_map->tile_side_in_meters });
|
||||
|
||||
tile_map_difference RelNewPlayerP =
|
||||
SubtractInF32(tile_map, &TestTileP, &new_player_p);
|
||||
v2 TestP = ClosestPointInRectangle(MinCorner, MaxCorner,
|
||||
RelNewPlayerP);
|
||||
tile_map_difference rel_new_player_p =
|
||||
subtract_in_f32(tile_map, &test_tile_p, &new_player_p);
|
||||
v2 test_p = closest_point_in_rectangle(min_corner,
|
||||
max_corner,
|
||||
rel_new_player_p);
|
||||
if(...) {
|
||||
}
|
||||
}
|
||||
@@ -846,10 +845,6 @@ void update_and_render(struct thread_context *thread,
|
||||
}
|
||||
}
|
||||
|
||||
/*draw_rectangle(buffer, 0.0f, 0.0f,
|
||||
(F32)buffer->Width, (F32)buffer->Height,
|
||||
0.0f, 1.0f, 0.0f);*/
|
||||
|
||||
draw_bitmap(buffer, &game_state->backdrop, 0.0f, 0.0f, 0, 0);
|
||||
|
||||
screen_center_x = 0.5f * (float)buffer->width;
|
||||
@@ -894,8 +889,8 @@ void update_and_render(struct thread_context *thread,
|
||||
Center.y = screen_center_y + meters_to_pixels *
|
||||
game_state->camera_p.offset.y -
|
||||
(float)rel_row*(float)tile_side_in_pixels;
|
||||
Min = V2Subtract(Center, TileSide);
|
||||
Max = V2Add(Center, TileSide);
|
||||
Min = v2_subtract(Center, TileSide);
|
||||
Max = v2_add(Center, TileSide);
|
||||
draw_rectangle(buffer, Min, Max, Gray, Gray, Gray);
|
||||
}
|
||||
}
|
||||
@@ -934,12 +929,13 @@ void update_and_render(struct thread_context *thread,
|
||||
player_ground_point_y - meters_to_pixels*entity->height;
|
||||
|
||||
player_width_height.x = entity->width;
|
||||
player_width_height.x = entity->height;
|
||||
player_width_height.y = entity->height;
|
||||
|
||||
draw_rectangle(buffer, player_left_top,
|
||||
V2Add(player_left_top, V2Multiply(meters_to_pixels,
|
||||
player_width_height)),
|
||||
player_r, player_g, player_b);
|
||||
v2_add(player_left_top,
|
||||
v2_multiply(meters_to_pixels,
|
||||
player_width_height)),
|
||||
player_r, player_g, player_b);
|
||||
|
||||
bitmap = &game_state->hero_bitmaps[entity->facing_direction];
|
||||
draw_bitmap(buffer, &bitmap->torso,
|
||||
|
||||
Reference in New Issue
Block a user