修复RoomObstacle析构函数问题
This commit is contained in:
parent
445d360dfe
commit
cfe26ae1a6
@ -85,7 +85,6 @@ void Entity::ClearColliders()
|
|||||||
{
|
{
|
||||||
for (auto& itr : colliders) {
|
for (auto& itr : colliders) {
|
||||||
ColliderComponent* collider = itr;
|
ColliderComponent* collider = itr;
|
||||||
OnRemoveCollider(collider);
|
|
||||||
DestoryCollider(collider);
|
DestoryCollider(collider);
|
||||||
}
|
}
|
||||||
colliders.clear();
|
colliders.clear();
|
||||||
|
@ -39,7 +39,6 @@ class Entity
|
|||||||
virtual bool IsDead(Room* room) { return false;};
|
virtual bool IsDead(Room* room) { return false;};
|
||||||
virtual long long GetDeadFrameNo(Room* room) { return 0;};
|
virtual long long GetDeadFrameNo(Room* room) { return 0;};
|
||||||
virtual void OnPreCollision(Room* room) {};
|
virtual void OnPreCollision(Room* room) {};
|
||||||
virtual void OnRemoveCollider(ColliderComponent* collider) {};
|
|
||||||
bool TestCollision(Room* room, Entity* b);
|
bool TestCollision(Room* room, Entity* b);
|
||||||
bool TestCollision(Room* room, ColliderComponent* b);
|
bool TestCollision(Room* room, ColliderComponent* b);
|
||||||
bool TestCollisionEx(Room* room, const a8::Vec2& aabb_pos, AabbCollider& aabb_box);
|
bool TestCollisionEx(Room* room, const a8::Vec2& aabb_pos, AabbCollider& aabb_box);
|
||||||
@ -78,9 +77,11 @@ class Entity
|
|||||||
pos_.y = y;
|
pos_.y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::list<ColliderComponent*> colliders;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
a8::Vec2 pos_;
|
a8::Vec2 pos_;
|
||||||
std::list<ColliderComponent*> colliders;
|
|
||||||
|
|
||||||
void ClearColliders();
|
void ClearColliders();
|
||||||
};
|
};
|
||||||
|
@ -18,7 +18,18 @@ RoomObstacle::RoomObstacle():Obstacle()
|
|||||||
|
|
||||||
RoomObstacle::~RoomObstacle()
|
RoomObstacle::~RoomObstacle()
|
||||||
{
|
{
|
||||||
|
for (auto& itr : colliders) {
|
||||||
|
ColliderComponent* collider = itr;
|
||||||
|
#ifdef DEBUG
|
||||||
|
a8::UdpLog::Instance()->Debug("OnRemoveCollider %d %d %d",
|
||||||
|
{
|
||||||
|
room->room_idx,
|
||||||
|
entity_uniid,
|
||||||
|
(long long)collider
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
room->map_service->RemoveCollider(collider);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RoomObstacle::Initialize()
|
void RoomObstacle::Initialize()
|
||||||
@ -68,16 +79,3 @@ void RoomObstacle::RecalcSelfCollider()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RoomObstacle::OnRemoveCollider(ColliderComponent* collider)
|
|
||||||
{
|
|
||||||
#ifdef DEBUG
|
|
||||||
a8::UdpLog::Instance()->Debug("OnRemoveCollider %d %d %d",
|
|
||||||
{
|
|
||||||
room->room_idx,
|
|
||||||
entity_uniid,
|
|
||||||
(long long)collider
|
|
||||||
});
|
|
||||||
#endif
|
|
||||||
room->map_service->RemoveCollider(collider);
|
|
||||||
}
|
|
||||||
|
@ -13,6 +13,4 @@ class RoomObstacle : public Obstacle
|
|||||||
virtual ~RoomObstacle() override;
|
virtual ~RoomObstacle() override;
|
||||||
virtual void Initialize() override;
|
virtual void Initialize() override;
|
||||||
virtual void RecalcSelfCollider() override;
|
virtual void RecalcSelfCollider() override;
|
||||||
virtual void OnRemoveCollider(ColliderComponent* collider) override;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user