This commit is contained in:
aozhiwei 2019-03-20 11:32:41 +08:00
parent 458542ede3
commit 7dd296d55d
6 changed files with 44 additions and 2 deletions

View File

@ -4,6 +4,7 @@
#include "metamgr.h"
#include "movement.h"
#include "room.h"
#include "collider.h"
Bullet::Bullet():Entity()
{
@ -19,6 +20,7 @@ Bullet::~Bullet()
void Bullet::Initialize()
{
RecalcSelfCollider();
}
void Bullet::Update(int delta_time)
@ -31,3 +33,13 @@ void Bullet::Update(int delta_time)
room->AddDeletedObject(objects[0]->entity_uniid);
}
}
void Bullet::RecalcSelfCollider()
{
if (!self_collider_) {
self_collider_ = new CircleCollider();
colliders.push_back(self_collider_);
}
self_collider_->pos = Vector2D();
self_collider_->rad = meta->i->bullet_rad();
}

View File

@ -9,6 +9,7 @@ namespace MetaData
}
class Human;
class CircleCollider;
class Bullet : public Entity
{
public:
@ -22,4 +23,9 @@ class Bullet : public Entity
virtual ~Bullet() override;
virtual void Initialize() override;
virtual void Update(int delta_time) override;
void RecalcSelfCollider();
private:
CircleCollider* self_collider_ = nullptr;
};

View File

@ -30,5 +30,12 @@ Entity::~Entity()
bool Entity::TestCollision(Entity* b)
{
return false;
for (auto& a_collider : b->colliders) {
for (auto& b_collider : b->colliders) {
if (a_collider->Intersect(b_collider)) {
return false;
}
}
}
return true;
}

View File

@ -6,6 +6,7 @@
#include "metamgr.h"
#include "room.h"
#include "bullet.h"
#include "collider.h"
Human::Human()
{
@ -26,6 +27,7 @@ void Human::Initialize()
helmet_meta = MetaMgr::Instance()->GetEquip(helmet);
chest_meta = MetaMgr::Instance()->GetEquip(chest);
weapon_meta = MetaMgr::Instance()->GetEquip(weapon);
RecalcSelfCollider();
}
float Human::GetSpeed()
@ -101,3 +103,13 @@ void Human::Shot(Vector2D& target_dir)
room->AddBullet(bullet);
}
}
void Human::RecalcSelfCollider()
{
if (!self_collider_) {
self_collider_ = new CircleCollider();
colliders.push_back(self_collider_);
}
self_collider_->pos = Vector2D();
self_collider_->rad = meta->i->radius();
}

View File

@ -15,6 +15,7 @@ struct HumanFrameData
::google::protobuf::RepeatedPtrField<::cs::MFShot> shots;
};
class CircleCollider;
class Human : public Entity
{
public:
@ -57,5 +58,9 @@ class Human : public Entity
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override;
void Shot(Vector2D& target_dir);
void RecalcSelfCollider();
private:
CircleCollider* self_collider_ = nullptr;
};

2
third_party/tools vendored

@ -1 +1 @@
Subproject commit 0fe613a85023d94103a013cadcc4927004aab8b4
Subproject commit 23026cb4e2ec630f6d421f742b65de6752a57b9d