Fixed sprite allocation bugs

* Fixed bug that would cause the renderer for sprites to be corrupted on when the sprite vector is resized
* Changed deleted_sprites variable to deleted_animation in sprite object
* Changed sprite pointer vector to sprite id vector in canvas object
* Changed the value stored in Fixture UserData pointer to sprite id rather than sprite pointer because pointer would change on resize anyway
This commit is contained in:
n00b
2024-12-22 13:05:23 -05:00
parent ac2cb91b18
commit 0ef552910a
9 changed files with 85 additions and 54 deletions

View File

@@ -623,8 +623,8 @@ int rc_castRay2D_All(double from_x, double from_y, double to_x, double to_y)
{
rc_rayHit2D.clear();
RayCastCallback callback;
const b2Vec2 point1(from_x, from_y);
const b2Vec2 point2(to_x, to_y);
b2Vec2 point1(from_x, from_y);
b2Vec2 point2(to_x, to_y);
rc_canvas[rc_active_canvas].physics2D.world->RayCast(&callback, point1, point2);
@@ -633,7 +633,7 @@ int rc_castRay2D_All(double from_x, double from_y, double to_x, double to_y)
for(int i = 0; i < cb_hits.size(); i++)
{
rc_rayHit2D_obj hit;
rc_sprite2D_obj* h_sprite = (rc_sprite2D_obj*)cb_hits[i].fixture->GetBody()->GetUserData().pointer;
rc_sprite2D_obj* h_sprite = &rc_sprite[cb_hits[i].fixture->GetBody()->GetUserData().pointer];
hit.sprite_id = h_sprite->id;
hit.hit_point = cb_hits[i].point;
hit.hit_normal = cb_hits[i].normal;
@@ -661,7 +661,7 @@ int rc_castRay2D(double from_x, double from_y, double to_x, double to_y)
for(int i = 0; i < cb_hits.size(); i++)
{
rc_rayHit2D_obj hit;
rc_sprite2D_obj* h_sprite = (rc_sprite2D_obj*)cb_hits[i].fixture->GetBody()->GetUserData().pointer;
rc_sprite2D_obj* h_sprite = &rc_sprite[cb_hits[i].fixture->GetBody()->GetUserData().pointer];
hit.sprite_id = h_sprite->id;
hit.hit_point = cb_hits[i].point;
hit.hit_normal = cb_hits[i].normal;