aozhiwei b3fb8beff5 1
2019-06-06 14:48:33 +08:00

57 lines
1.2 KiB
C++

#pragma once
#include "entity.h"
namespace MetaData
{
struct Player;
struct Equip;
struct MapThing;
struct Building;
}
namespace metatable
{
class DoorObjJson;
}
class Human;
class Building;
class CircleCollider;
class AabbCollider;
class Bullet;
class Obstacle : public Entity
{
public:
MetaData::MapThing* meta = nullptr;
float health = 0.0f;
bool dead = false;
long long dead_frameno = 0;
bool is_door = false;
int door_id = 0;
int door_open_times = 0;
DoorState_e door_state = DoorStateClose;
Building* building = nullptr;
int door_house_uniid = 0;
const metatable::DoorObjJson* door_state0 = nullptr;
const metatable::DoorObjJson* door_state1 = nullptr;
#ifdef RAY_DETECTION
std::set<Bullet*> observer_set;
#endif
Obstacle();
virtual ~Obstacle() override;
virtual void Initialize() override;
void RecalcSelfCollider();
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override;
virtual ColliderComponent* GetBoxBound() override;
void Explosion(Bullet* bullet);
private:
CircleCollider* self_collider_ = nullptr;
AabbCollider* self_collider2_ = nullptr;
};