From 6e221659307cc81863e21753bedfa08bd8bb04a7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 8 Aug 2022 17:17:16 +0800 Subject: [PATCH] 1 --- server/gameserver/obstacle.cc | 13 +++++++++++++ server/gameserver/obstacle.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 155b4c2d..c79ba487 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -964,3 +964,16 @@ void Obstacle::ProcDieExplosion(Room* room) ); } } + +void Obstacle::SetRotate(float rotate) +{ + rotate_ = rotate; + for (auto collider : colliders_) { + if (collider->type == CT_Circle) { + CircleCollider* circle_collider = (CircleCollider*)collider; + if (fabs(rotate) > 0.0001) { + circle_collider->pos.Rotate(rotate); + } + } + } +} diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index 08dbacfe..354552aa 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -51,6 +51,8 @@ class Obstacle : public Entity virtual int OnCollisionTrigger(Creature* c, ColliderComponent* collider); virtual bool CanSeeMe(Human* hum); virtual bool ReceiveExplosionDmg(Explosion* explosion) override; + virtual void SetRotate(float rotate); + float GetRotate() { return rotate_; } void SetDoorInfo(Building* building, int door_id_x); bool IsDoor(); DoorState_e GetDoorState(Room* room); @@ -102,5 +104,7 @@ protected: int team_id_ = 0; int master_id_ = 0; + float rotate_ = 0; + friend class EntityFactory; };