65 lines
2.0 KiB
C++
65 lines
2.0 KiB
C++
#include "precompile.h"
|
|
|
|
#include "dummyentity.h"
|
|
|
|
#include "metatable.pb.h"
|
|
#include "collider.h"
|
|
#include "mapservice.h"
|
|
|
|
void DummyEntity::Initialize()
|
|
{
|
|
Entity::Initialize();
|
|
std::vector<AabbCollider*> collider_list;
|
|
if (blocks) {
|
|
for (auto& obj : *blocks) {
|
|
switch (obj.shape()) {
|
|
case 1:
|
|
{
|
|
CircleCollider* collider = new CircleCollider();
|
|
collider->owner = this;
|
|
collider->pos = a8::Vec2(obj.x(), obj.y());
|
|
collider->rad = obj.rad();
|
|
collider->tag = obj.collider_tag();
|
|
if (obj.bullet_penetrate()) {
|
|
a8::SetBitFlag(collider->tag, kHalfWallTag);
|
|
}
|
|
AddEntityCollider(collider);
|
|
permanent_map_service->AddCollider(collider);
|
|
}
|
|
break;
|
|
case 2:
|
|
{
|
|
AabbCollider* collider = new AabbCollider();
|
|
collider->owner = this;
|
|
collider->_min = a8::Vec2(obj.x() - obj.width()/2.0,
|
|
obj.y() - obj.height()/2.0);
|
|
collider->_max = a8::Vec2(obj.x() + obj.width()/2.0,
|
|
obj.y() + obj.height()/2.0);
|
|
collider->tag = obj.collider_tag();
|
|
if (obj.bullet_penetrate()) {
|
|
a8::SetBitFlag(collider->tag, kHalfWallTag);
|
|
}
|
|
AddEntityCollider(collider);
|
|
collider_list.push_back(collider);
|
|
permanent_map_service->AddCollider(collider);
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void DummyEntity::OnBulletHit(Bullet* bullet)
|
|
{
|
|
|
|
}
|
|
|
|
void DummyEntity::OnExplosionHit(Explosion* explosion)
|
|
{
|
|
|
|
}
|