From d4b03e49ba6cc9a4ab10b811ed6f992885210522 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 31 Dec 2022 19:33:44 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 51 +----------------------- server/gameserver/creature.h | 3 -- server/gameserver/incubator.cc | 4 ++ server/gameserver/mapservice.cc | 69 --------------------------------- server/gameserver/mapservice.h | 9 ----- 5 files changed, 5 insertions(+), 131 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 6fd7b827..cfd35a46 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1777,28 +1777,6 @@ void Creature::SummonObstacle(Buff* buff, int id, const Position& target_pos) } } -bool Creature::CollisonDetection() -{ - ColliderComponent* pickup_collider = nullptr; - return CollisonDetectionAndGetCollider(&pickup_collider); -} - -bool Creature::CollisonDetectionAndGetCollider(ColliderComponent** pickup_collider) -{ - bool through_wall = HasBuffEffect(kBET_ThroughWall) || - HasBuffEffect(kBET_Fly); - AabbCollider aabb_box; - GetAabbBox(aabb_box); - return room->map_service->CollisionDetectionAndGetCollider - ( - room, - through_wall, - GetPos(), - &aabb_box, - pickup_collider - ); -} - void Creature::FillSkillCasterState(SkillCasterState* caster_state) { caster_state->caster.Attach(this); @@ -2163,21 +2141,6 @@ void Creature::SetMaxHP(float max_hp) #endif } -bool Creature::TryMove(const Position& target_pos, Position& out_pos) -{ - bool move_ok = false; - Position old_pos = GetPos(); - out_pos = GetPos(); - - SetPos(target_pos); - if (CollisonDetection()) { - out_pos = target_pos; - move_ok = true; - } else { - } - return move_ok; -} - void Creature::SetInfiniteBulletMode() { inventory_[IS_9MM].num = FIGHTING_MODE_BULLET_NUM; @@ -2190,12 +2153,6 @@ void Creature::SetInfiniteBulletMode() void Creature::FindLocation() { - ColliderComponent* target_collider = nullptr; - if (CollisonDetectionAndGetCollider(&target_collider)) { - if (!target_collider) { - A8_ABORT(); - } - } } bool Creature::Attackable(Room* room) @@ -2340,13 +2297,7 @@ bool Creature::TrySummonHero(const mt::Hero* hero_meta, glm::vec3 dir, Position collider._max.x = hero_meta->radius(); collider._max.y = hero_meta->radius(); collider.MoveCenter(hero_meta->move_offset_x(), hero_meta->move_offset_y()); - return !room->map_service->CollisionDetection - ( - room, - through_wall, - born_pos, - &collider - ); + abort(); } Hero* Creature::InternalSummonHero(Buff* buff, const mt::Hero* hero_meta, glm::vec3 dir, Position born_pos, diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index 97032feb..b5714463 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -225,8 +225,6 @@ class Creature : public MoveableEntity void _UpdateSpecMove(); void CheckSpecObject(); - bool CollisonDetection(); - bool CollisonDetectionAndGetCollider(ColliderComponent** pickup_collider); void SummonObstacle(Buff* buff, int id, const Position& target_pos); void SummonHero(Buff* buff, const Position& pos, const glm::vec3& dir); void FillSkillCasterState(SkillCasterState* caster_state); @@ -249,7 +247,6 @@ class Creature : public MoveableEntity float GetHPRate(); void GetHitEnemys(std::set& enemys, float radius); void GetHitEnemys(std::set& enemys, const glm::vec3 center, float radius); - bool TryMove(const Position& target_pos, Position& out_pos); void SetInfiniteBulletMode(); void FindLocation(); bool CheckCollision(); diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index 24c6c4ff..847bdbbc 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -77,8 +77,12 @@ void Incubator::AllocAndroid(Human* target, int num) #else hum->SetPos(target->GetPos() + dir * (MetaMgr::Instance()->incubator_base_length + rand_len)); #endif +#if 1 + if (true) { +#else if (hum->CollisonDetection() || !CanSee(hum, target)) { hum->SetPos(old_pos); +#endif } else { room->EnableHuman(hum); #ifdef DEBUG diff --git a/server/gameserver/mapservice.cc b/server/gameserver/mapservice.cc index de22143e..f2aeaa59 100644 --- a/server/gameserver/mapservice.cc +++ b/server/gameserver/mapservice.cc @@ -297,72 +297,3 @@ int MapService::GetGridId(float world_x, float world_y) int grid_id = (int)(world_x/cell_width_) + (int)(world_y/cell_width_) * map_width_; return grid_id; } - -bool MapService::CollisionDetection(Room* room, - bool through_wall, - const Position& pos, - ColliderComponent* a_collider) -{ - ColliderComponent* pickup_collider = nullptr; - return CollisionDetectionAndGetCollider - ( - room, - through_wall, - pos, - a_collider, - &pickup_collider - ); -} - -bool MapService::CollisionDetectionAndGetCollider(Room* room, - bool through_wall, - const Position& pos, - ColliderComponent* a_collider, - ColliderComponent** pickup_collider) -{ - // 999 - #if 1 - #else - *pickup_collider = nullptr; - if (room->OverBorder(pos, a_collider)){ - return true; - } - if (through_wall) { - return false; - } - - std::set colliders; - GetColliders(room, pos.x, pos.y, colliders); - - for (ColliderComponent* collider : colliders) { - switch (collider->owner->GetEntityType()) { - case ET_Obstacle: - { - Obstacle* obstacle = (Obstacle*)collider->owner; - if (obstacle->meta->prebattle_hide() && room->GetGasData().GetGasMode() == GasInactive) { - break; - } - if (obstacle->meta->collision_hit() != kCollisionHitPass) { - if (!obstacle->IsDead(room) && collider->IntersectEx(pos, a_collider)) { - *pickup_collider = collider; - return true; - } - } - } - break; - case ET_Building: - case ET_Dummy: - { - if (collider->IntersectEx(pos, a_collider)) { - *pickup_collider = collider; - return true; - } - } - break; - default: - break; - } - } - #endif - return false; -} diff --git a/server/gameserver/mapservice.h b/server/gameserver/mapservice.h index 8cbfa4a1..0bb43657 100644 --- a/server/gameserver/mapservice.h +++ b/server/gameserver/mapservice.h @@ -32,15 +32,6 @@ class MapService float world_x, float world_y, std::set& colliders); - bool CollisionDetection(Room* room, - bool through_wall, - const Position& pos, - ColliderComponent* collider); - bool CollisionDetectionAndGetCollider(Room* room, - bool through_wall, - const Position& pos, - ColliderComponent* collider, - ColliderComponent** pickup_collider); private: int GetGridId(float world_x, float world_y);