1
This commit is contained in:
parent
9e040e8a7e
commit
dbe014eec0
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
|
#include <glm/vec2.hpp>
|
||||||
|
|
||||||
#include "creature.h"
|
#include "creature.h"
|
||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "skill.h"
|
#include "skill.h"
|
||||||
@ -2419,11 +2423,9 @@ void Creature::UpdateMove()
|
|||||||
if (!GetMovement()->IsFindPath()) {
|
if (!GetMovement()->IsFindPath()) {
|
||||||
GetMovement()->CalcTargetPos(mt::Param::s().move_step_len);
|
GetMovement()->CalcTargetPos(mt::Param::s().move_step_len);
|
||||||
if (!GetMovement()->UpdatePosition()) {
|
if (!GetMovement()->UpdatePosition()) {
|
||||||
#if 0
|
|
||||||
if (IsPlayer()) {
|
if (IsPlayer()) {
|
||||||
ShortFindPath();
|
ShortFindPath();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2937,11 +2939,7 @@ void Creature::ShortFindPath()
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
glm::vec3 last_pos = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
glm::vec3 start_pos = GetPos().ToGlmVec3() + GetMoveDir() * -1.0f * 2.0f;
|
glm::vec3 start_pos = GetPos().ToGlmVec3() + GetMoveDir() * -1.0f * 2.0f;
|
||||||
#if 1
|
|
||||||
bool right_ok = false;
|
bool right_ok = false;
|
||||||
float right_distance = 0.0f;
|
float right_distance = 0.0f;
|
||||||
glm::vec3 right_pos = glm::vec3(0.0f, 0.0f, 0.0f);
|
glm::vec3 right_pos = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
@ -2989,46 +2987,16 @@ void Creature::ShortFindPath()
|
|||||||
}
|
}
|
||||||
glm::vec3 move_dir = finaly_pos - GetPos().ToGlmVec3();
|
glm::vec3 move_dir = finaly_pos - GetPos().ToGlmVec3();
|
||||||
GlmHelper::Normalize(move_dir);
|
GlmHelper::Normalize(move_dir);
|
||||||
glm::vec3 end_pos = start_pos + move_dir * GetSpeed() / 2.0f;
|
glm::vec3 end_pos = start_pos + move_dir * GetSpeed() / 1.0f;
|
||||||
|
|
||||||
glm::vec3 new_point = glm::vec3(0.0f, 0.0f, 0.0f);
|
glm::vec3 new_point = glm::vec3(0.0f, 0.0f, 0.0f);
|
||||||
bool ret = try_move(start_pos, end_pos, new_point);
|
bool ret = try_move(start_pos, end_pos, new_point);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
Global::Instance()->verify_set_pos = 1;
|
Global::Instance()->verify_set_pos = 1;
|
||||||
GetMutablePos().FromGlmVec3(last_pos);
|
GetMutablePos().FromGlmVec3(new_point);
|
||||||
Global::Instance()->verify_set_pos = 0;
|
Global::Instance()->verify_set_pos = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
for (float angle = 1.0f; angle < 90.0f; angle += 1.0f) {
|
|
||||||
glm::vec3 move_dir = GetMoveDir();
|
|
||||||
GlmHelper::RotateY(move_dir, angle);
|
|
||||||
glm::vec3 end_pos = start_pos + move_dir * 80.0f;
|
|
||||||
|
|
||||||
glm::vec3 new_point = glm::vec3(0.0f, 0.0f, 0.0f);
|
|
||||||
bool ret = try_move(start_pos, end_pos, new_point);
|
|
||||||
if (ret) {
|
|
||||||
if (count <= 0) {
|
|
||||||
last_pos = new_point;
|
|
||||||
} else {
|
|
||||||
float curr_distance = GlmHelper::Norm(new_point - start_pos);
|
|
||||||
float curr_center_distance = GlmHelper::Norm(new_point - GetPos().ToGlmVec3());
|
|
||||||
float last_distance = GlmHelper::Norm(last_pos - start_pos);
|
|
||||||
float last_center_distance = GlmHelper::Norm(last_pos - GetPos().ToGlmVec3());
|
|
||||||
if (curr_distance > last_distance) {
|
|
||||||
if (std::fabs(curr_distance - GetSpeed())) {
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
Global::Instance()->verify_set_pos = 1;
|
|
||||||
GetMutablePos().FromGlmVec3(last_pos);
|
|
||||||
Global::Instance()->verify_set_pos = 0;
|
|
||||||
}
|
|
||||||
++count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2916,12 +2916,12 @@ void Human::ProcLootWeapon(AddItemDTO& dto)
|
|||||||
|
|
||||||
void Human::LootInteraction(Loot* entity)
|
void Human::LootInteraction(Loot* entity)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG1
|
||||||
a8::XPrintf("LootInteraction start %d:%d\n", {entity->GetUniId(), entity->item_id});
|
a8::XPrintf("LootInteraction start %d:%d\n", {entity->GetUniId(), entity->item_id});
|
||||||
#endif
|
#endif
|
||||||
if (entity->pickuped ||
|
if (entity->pickuped ||
|
||||||
entity->count <= 0) {
|
entity->count <= 0) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG1
|
||||||
a8::XPrintf("LootInteraction error1 %d:%d\n", {entity->GetUniId(), entity->item_id});
|
a8::XPrintf("LootInteraction error1 %d:%d\n", {entity->GetUniId(), entity->item_id});
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user