1
This commit is contained in:
parent
458542ede3
commit
7dd296d55d
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
};
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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
2
third_party/tools
vendored
@ -1 +1 @@
|
||||
Subproject commit 0fe613a85023d94103a013cadcc4927004aab8b4
|
||||
Subproject commit 23026cb4e2ec630f6d421f742b65de6752a57b9d
|
Loading…
x
Reference in New Issue
Block a user