Merge branch 'develop' into feature/skill-data

This commit is contained in:
VDH
2025-12-12 18:59:26 +07:00
+20 -129
View File
@@ -3954,140 +3954,31 @@ namespace BrewMonster
return bRet;
}
public bool GetPushDir(ref Vector3 vPushDir, uint dwMask, float deltaTime)
{
Vector3 vRight = Vector3.zero;
vRight.x = joystick.Horizontal;
vRight.z = joystick.Vertical;
vRight.y = 0f;
vRight.Normalize();
if (vRight == Vector3.zero)
{
vPushDir = Vector3.zero;
if (joystick.Horizontal == 0 && joystick.Vertical == 0)
{
return false;
}
vPushDir = vRight;
/* // reset
vPushDir = Vector3.zero;
Vector3 vRight = Vector3.zero;
bool bMove = false;
if(m_iMoveEnv == Move_environment.MOVEENV_AIR)
{
// Không bấm gì → không có hướng
if (m_dwMoveRelDir == 0)
return false;
}
else if(m_iMoveEnv == Move_environment.MOVEENV_WATER)
{
// ===== LEFT =====
if ((m_dwMoveRelDir & MD_LEFT) != 0)
{
// Nếu trên không → xoay camera thay vì di chuyển
if (m_iMoveEnv == MOVEENV_AIR)
{
// giữ nguyên logic PW
ECMSG msg = new ECMSG();
msg.dwParam2 = 0;
msg.dwParam1 = (uint)(_yaw_vel_air * deltaTime);
if ((m_dwMoveRelDir & MD_BACK) != 0)
msg.dwParam1 = (uint)(-(int)msg.dwParam1);
OnMsgHstYaw(msg); // TODO: bạn map hàm này sang Unity
}
else if (m_iMoveEnv == MOVEENV_WATER)
{
ECMSG msg = new ECMSG();
msg.dwParam2 = 0;
msg.dwParam1 = (uint)(_yaw_vel * deltaTime);
if ((m_dwMoveRelDir & MD_BACK) != 0)
msg.dwParam1 = (uint)(-(int)msg.dwParam1);
OnMsgHstYaw(msg); // TODO
}
else
{
// Mặt đất → di chuyển sang trái theo camera
// C++: vRight = -m_CameraCoord.GetRight();
Vector3 camRight = m_CameraCoord.GetRight(); // TODO: map sang Unity Camera?
vRight = -camRight;
vRight.y = 0;
vRight.Normalize();
vPushDir = vRight;
bMove = true;
}
}
// ===== RIGHT =====
else if ((m_dwMoveRelDir & MD_RIGHT) != 0)
{
if (m_iMoveEnv == MOVEENV_AIR)
{
ECMSG msg = new ECMSG();
msg.dwParam2 = 0;
msg.dwParam1 = (uint)((-_yaw_vel_air) * deltaTime);
if ((m_dwMoveRelDir & MD_BACK) != 0)
msg.dwParam1 = (uint)(-(int)msg.dwParam1);
OnMsgHstYaw(msg); // TODO
}
else if (m_iMoveEnv == MOVEENV_WATER)
{
ECMSG msg = new ECMSG();
msg.dwParam2 = 0;
msg.dwParam1 = (uint)((-_yaw_vel) * deltaTime);
if ((m_dwMoveRelDir & MD_BACK) != 0)
msg.dwParam1 = (uint)(-(int)msg.dwParam1);
OnMsgHstYaw(msg); // TODO
}
else
{
// Mặt đất → di chuyển sang phải theo camera
Vector3 camRight = m_CameraCoord.GetRight(); // TODO
vRight = camRight;
vRight.y = 0;
vRight.Normalize();
vPushDir = vRight;
bMove = true;
}
}
// ===== FORWARD =====
if ((m_dwMoveRelDir & MD_FORWARD) != 0)
{
Vector3 forward = m_CameraCoord.GetDir(); // TODO
forward.y = 0;
forward.Normalize();
vPushDir = forward;
if (bMove)
{
vPushDir += vRight;
vPushDir.Normalize();
}
}
// ===== BACK =====
else if ((m_dwMoveRelDir & MD_BACK) != 0)
{
Vector3 back = -m_CameraCoord.GetDir(); // TODO
back.y = 0;
back.Normalize();
vPushDir = back;
if (bMove)
{
vPushDir += vRight;
vPushDir.Normalize();
}
}
// ===== ABS UP (nếu mask cho phép) =====
else if (((m_dwMoveRelDir & MD_ABSUP) != 0) && ((dwMask & MD_ABSUP) != 0))
{
vPushDir = Vector3.up;
}*/
}
else
{
float angle = Vector2.Angle(new Vector2(joystick.Horizontal, joystick.Vertical), Vector2.up);
angle *= joystick.Horizontal < 0 ? 1 : -1;
Vector2 v2Cam = new Vector2(mainCam.transform.forward.x, mainCam.transform.forward.z);
v2Cam = Quaternion.Euler(0, 0, angle) * v2Cam;
v2Cam.Normalize();
vPushDir.x = v2Cam.x;
vPushDir.y = 0;
vPushDir.z = v2Cam.y;
}
return true;
}