1
This commit is contained in:
parent
458542ede3
commit
7dd296d55d
@ -4,6 +4,7 @@
|
|||||||
#include "metamgr.h"
|
#include "metamgr.h"
|
||||||
#include "movement.h"
|
#include "movement.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
|
#include "collider.h"
|
||||||
|
|
||||||
Bullet::Bullet():Entity()
|
Bullet::Bullet():Entity()
|
||||||
{
|
{
|
||||||
@ -19,6 +20,7 @@ Bullet::~Bullet()
|
|||||||
|
|
||||||
void Bullet::Initialize()
|
void Bullet::Initialize()
|
||||||
{
|
{
|
||||||
|
RecalcSelfCollider();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bullet::Update(int delta_time)
|
void Bullet::Update(int delta_time)
|
||||||
@ -31,3 +33,13 @@ void Bullet::Update(int delta_time)
|
|||||||
room->AddDeletedObject(objects[0]->entity_uniid);
|
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 Human;
|
||||||
|
class CircleCollider;
|
||||||
class Bullet : public Entity
|
class Bullet : public Entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -22,4 +23,9 @@ class Bullet : public Entity
|
|||||||
virtual ~Bullet() override;
|
virtual ~Bullet() override;
|
||||||
virtual void Initialize() override;
|
virtual void Initialize() override;
|
||||||
virtual void Update(int delta_time) 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)
|
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 "metamgr.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "bullet.h"
|
#include "bullet.h"
|
||||||
|
#include "collider.h"
|
||||||
|
|
||||||
Human::Human()
|
Human::Human()
|
||||||
{
|
{
|
||||||
@ -26,6 +27,7 @@ void Human::Initialize()
|
|||||||
helmet_meta = MetaMgr::Instance()->GetEquip(helmet);
|
helmet_meta = MetaMgr::Instance()->GetEquip(helmet);
|
||||||
chest_meta = MetaMgr::Instance()->GetEquip(chest);
|
chest_meta = MetaMgr::Instance()->GetEquip(chest);
|
||||||
weapon_meta = MetaMgr::Instance()->GetEquip(weapon);
|
weapon_meta = MetaMgr::Instance()->GetEquip(weapon);
|
||||||
|
RecalcSelfCollider();
|
||||||
}
|
}
|
||||||
|
|
||||||
float Human::GetSpeed()
|
float Human::GetSpeed()
|
||||||
@ -101,3 +103,13 @@ void Human::Shot(Vector2D& target_dir)
|
|||||||
room->AddBullet(bullet);
|
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;
|
::google::protobuf::RepeatedPtrField<::cs::MFShot> shots;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CircleCollider;
|
||||||
class Human : public Entity
|
class Human : public Entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -57,5 +58,9 @@ class Human : public Entity
|
|||||||
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override;
|
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override;
|
||||||
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override;
|
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override;
|
||||||
void Shot(Vector2D& target_dir);
|
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