1
This commit is contained in:
parent
879ae26490
commit
3091de966c
@ -19,6 +19,13 @@ namespace MetaData
|
||||
|
||||
void Map::Init()
|
||||
{
|
||||
{
|
||||
metatable::Map* mutable_pb = (metatable::Map*)pb;
|
||||
#if DEBUG
|
||||
mutable_pb->set_scale(0.1f);
|
||||
#else
|
||||
#endif
|
||||
}
|
||||
rand_space = 0;
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
|
@ -79,24 +79,31 @@ void MoveHelper::CalcTargetPos(float distance)
|
||||
a8::XPrintf("CalcTaretPos old_size:%d\n", {paths_.size()});
|
||||
}
|
||||
#endif
|
||||
glm::vec3 start;
|
||||
glm::vec3 start = owner_->GetPos().ToGlmVec3();
|
||||
glm::vec3 end;
|
||||
glm::vec3 hit_point;
|
||||
|
||||
#if 1
|
||||
start *= owner_->room->GetMapMeta()->pb->scale();
|
||||
#else
|
||||
start.x = owner_->GetPos().x / 10.0f;
|
||||
start.y = 0;
|
||||
start.z = owner_->GetPos().y / 10.0f;
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
#else
|
||||
a8::Vec2 target_pos2d = owner_->GetPos() + owner_->GetMoveDir() * distance;
|
||||
end.x = target_pos2d.x / 10.0f;
|
||||
end.y = 0;
|
||||
end.z = target_pos2d.y / 10.0f;
|
||||
#endif
|
||||
|
||||
bool is_hit = false;
|
||||
MovePathPoint point;
|
||||
if (c->HasBuffEffect(kBET_ThroughWall) ||
|
||||
c->HasBuffEffect(kBET_Fly) ||
|
||||
c->HasBuffEffect(kBET_Jump)) {
|
||||
if (owner_->HasBuffEffect(kBET_ThroughWall) ||
|
||||
owner_->HasBuffEffect(kBET_Fly) ||
|
||||
owner_->HasBuffEffect(kBET_Jump)) {
|
||||
point.tar_pos = end * 10.f;
|
||||
if (point.tar_pos.x > owner_->room->GetMapMeta()->pb->map_width() + 10) {
|
||||
point.tar_pos.x = owner_->room->GetMapMeta()->pb->map_width() - 10;
|
||||
@ -122,7 +129,7 @@ void MoveHelper::CalcTargetPos(float distance)
|
||||
a8::Vec2 v2;
|
||||
v2.x = point.tar_pos.x;
|
||||
v2.y = point.tar_pos.z;
|
||||
point.distance = v2.Distance(owner_->GetPos());
|
||||
point.distance = owner_->GetPos().Distance2D(v2);
|
||||
point.src_pos.x = owner_->GetPos().x;
|
||||
point.src_pos.z = owner_->GetPos().y;
|
||||
point.curr_pos.x = owner_->GetPos().x;
|
||||
@ -152,14 +159,21 @@ void MoveHelper::CalcTargetPos(float distance)
|
||||
});
|
||||
#endif
|
||||
|
||||
if (v2.Distance(owner_->GetPos()) < 0.00001f) {
|
||||
if (point.distance < 0.00001f / owner_->room->GetMapMeta()->pb->scale()) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if 1
|
||||
a8::Vec2 dir = owner_->GetPos().CalcDir2DEx(v2);
|
||||
dir.Normalize();
|
||||
point.dir.x = dir.x;
|
||||
point.dir.z = dir.y;
|
||||
#else
|
||||
a8::Vec2 dir = (v2 - owner_->GetPos());
|
||||
dir.Normalize();
|
||||
point.dir.x = dir.x;
|
||||
point.dir.z = dir.y;
|
||||
#endif
|
||||
|
||||
paths_.push_back(point);
|
||||
}
|
||||
|
@ -25,6 +25,16 @@ a8::Vec2 Position::CalcDir2D(const Position& target_pos)
|
||||
return target_pos.ToVec2() - ToVec2();
|
||||
}
|
||||
|
||||
a8::Vec2 Position::CalcDir2DEx(const a8::Vec2& target_pos)
|
||||
{
|
||||
return target_pos - ToVec2();
|
||||
}
|
||||
|
||||
a8::Vec2 Position::CalcDirGlm2DEx(const glm::vec2& target_pos)
|
||||
{
|
||||
return a8::Vec2(target_pos.x, target_pos.y) - ToVec2();
|
||||
}
|
||||
|
||||
void Position::FromVec2(const a8::Vec2 v)
|
||||
{
|
||||
x = v.x;
|
||||
@ -45,7 +55,7 @@ void Position::FromVec3(const a8::Vec3 v)
|
||||
z = v.z;
|
||||
}
|
||||
|
||||
void Position::FromGlmVec2Ex(const glm::vec2 v)
|
||||
void Position::FromGlmVec2(const glm::vec2 v)
|
||||
{
|
||||
x = v.x;
|
||||
y = v.y;
|
||||
|
@ -76,6 +76,8 @@ struct Position
|
||||
float Distance2D2(const Position& pos);
|
||||
float ManhattanDistance2D(const Position& target_pos);
|
||||
a8::Vec2 CalcDir2D(const Position& target_pos);
|
||||
a8::Vec2 CalcDir2DEx(const a8::Vec2& target_pos);
|
||||
a8::Vec2 CalcDirGlm2DEx(const glm::vec2& target_pos);
|
||||
|
||||
void FromVec2(const a8::Vec2 v);
|
||||
void FromVec2Ex(const a8::Vec2 v);
|
||||
|
Loading…
x
Reference in New Issue
Block a user