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

@@ -298,9 +298,9 @@ class rc_contactListener_obj : public b2ContactListener
{
void BeginContact(b2Contact* contact)
{
rc_sprite2D_obj* spriteA = (rc_sprite2D_obj*) contact->GetFixtureA()->GetBody()->GetUserData().pointer;
rc_sprite2D_obj* spriteA = &rc_sprite[contact->GetFixtureA()->GetBody()->GetUserData().pointer];
rc_sprite2D_obj* spriteB = (rc_sprite2D_obj*) contact->GetFixtureB()->GetBody()->GetUserData().pointer;
rc_sprite2D_obj* spriteB = &rc_sprite[contact->GetFixtureB()->GetBody()->GetUserData().pointer];
//std::cout << "sprite[" << spriteA->id << "] collide with sprite[" << spriteB->id << "]" << std::endl;
@@ -361,7 +361,7 @@ struct rc_canvas_obj
irr::u32 color_mod;
rc_physicsWorld2D_obj physics2D;
irr::core::array<rc_sprite2D_obj*> sprite;
irr::core::array<irr::s32> sprite_id;
};
irr::core::array<rc_canvas_obj> rc_canvas;