57 lines
1.2 KiB
C++
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;
|
|
|
|
};
|