Merge branch 'main' into ImGui-V2
This commit is contained in:
commit
44669c910f
@ -108,37 +108,39 @@ void PositionClass::TurnRight(bool keydown)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PositionClass::TurnMouse(float deltaX, float deltaY)
|
void PositionClass::TurnMouse(float deltaX, float deltaY, bool rightMouseDown)
|
||||||
{
|
{
|
||||||
float speed = 0.1f;
|
float speed = 0.1f;
|
||||||
// The turning speed is proportional to the horizontal mouse movement
|
// The turning speed is proportional to the horizontal mouse movement
|
||||||
m_horizontalTurnSpeed = deltaX * speed;
|
m_horizontalTurnSpeed = deltaX * speed;
|
||||||
|
|
||||||
// Update the rotation using the turning speed
|
if (rightMouseDown)
|
||||||
m_rotationY += m_horizontalTurnSpeed;
|
|
||||||
if (m_rotationY < 0.0f)
|
|
||||||
{
|
{
|
||||||
m_rotationY += 360.0f;
|
// Update the rotation using the turning speed
|
||||||
}
|
m_rotationY += m_horizontalTurnSpeed;
|
||||||
else if (m_rotationY > 360.0f)
|
if (m_rotationY < 0.0f)
|
||||||
{
|
{
|
||||||
m_rotationY -= 360.0f;
|
m_rotationY += 360.0f;
|
||||||
}
|
}
|
||||||
|
else if (m_rotationY > 360.0f)
|
||||||
|
{
|
||||||
|
m_rotationY -= 360.0f;
|
||||||
|
}
|
||||||
|
|
||||||
// The turning speed is proportional to the vertical mouse movement
|
// The turning speed is proportional to the vertical mouse movement
|
||||||
m_verticalTurnSpeed = deltaY * speed;
|
m_verticalTurnSpeed = deltaY * speed;
|
||||||
|
|
||||||
// Update the rotation using the turning speed
|
// Update the rotation using the turning speed
|
||||||
m_rotationX += m_verticalTurnSpeed;
|
m_rotationX += m_verticalTurnSpeed;
|
||||||
if (m_rotationX < -90.0f)
|
if (m_rotationX < -90.0f)
|
||||||
{
|
{
|
||||||
m_rotationX = -90.0f;
|
m_rotationX = -90.0f;
|
||||||
|
}
|
||||||
|
else if (m_rotationX > 90.0f)
|
||||||
|
{
|
||||||
|
m_rotationX = 90.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (m_rotationX > 90.0f)
|
|
||||||
{
|
|
||||||
m_rotationX = 90.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
|
|
||||||
void TurnLeft(bool);
|
void TurnLeft(bool);
|
||||||
void TurnRight(bool);
|
void TurnRight(bool);
|
||||||
void TurnMouse(float, float);
|
void TurnMouse(float, float, bool);
|
||||||
void MoveCamera(bool, bool, bool, bool, bool, bool);
|
void MoveCamera(bool, bool, bool, bool, bool, bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -218,25 +218,33 @@ LRESULT CALLBACK SystemClass::MessageHandler(HWND hwnd, UINT umsg, WPARAM wparam
|
|||||||
}
|
}
|
||||||
case WM_DROPFILES:
|
case WM_DROPFILES:
|
||||||
{
|
{
|
||||||
if (!m_isResizing)
|
HDROP hDrop = reinterpret_cast<HDROP>(wparam);
|
||||||
{
|
UINT numFiles = DragQueryFile(hDrop, 0xFFFFFFFF, nullptr, 0);
|
||||||
HDROP hDrop = reinterpret_cast<HDROP>(wparam);
|
|
||||||
UINT numFiles = DragQueryFile(hDrop, 0xFFFFFFFF, nullptr, 0);
|
|
||||||
|
|
||||||
if (numFiles > 0 && m_Application != nullptr) {
|
if (numFiles > 0) {
|
||||||
// Handle dropped files here
|
for (UINT i = 0; i < numFiles; ++i) {
|
||||||
for (UINT i = 0; i < numFiles; ++i) {
|
WCHAR filePath[MAX_PATH];
|
||||||
// Get the file name
|
DragQueryFile(hDrop, i, filePath, MAX_PATH);
|
||||||
WCHAR filePath[MAX_PATH];
|
|
||||||
DragQueryFile(hDrop, i, filePath, MAX_PATH);
|
// Get the file extension
|
||||||
|
std::wstring fileName = filePath;
|
||||||
|
std::wstring extension = fileName.substr(fileName.find_last_of(L".") + 1);
|
||||||
|
|
||||||
|
// Check if the file has a valid extension
|
||||||
|
if (extension == L"txt" || extension == L"kobj") {
|
||||||
|
// Handle dropped files with valid extensions
|
||||||
std::wcout << L"File dropped: " << filePath << std::endl;
|
std::wcout << L"File dropped: " << filePath << std::endl;
|
||||||
m_Application->AddKobject(filePath);
|
m_Application->AddKobject(filePath);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
// Handle files with invalid extensions (optional)
|
||||||
|
std::wcout << L"Ignored file: " << filePath << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DragFinish(hDrop);
|
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
|
DragFinish(hDrop);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
// Any other messages send to the default message handler as our application won't make use of them.
|
// Any other messages send to the default message handler as our application won't make use of them.
|
||||||
default:
|
default:
|
||||||
|
@ -622,7 +622,7 @@ void ApplicationClass::Shutdown()
|
|||||||
bool ApplicationClass::Frame(InputClass* Input)
|
bool ApplicationClass::Frame(InputClass* Input)
|
||||||
{
|
{
|
||||||
int mouseX, mouseY, currentMouseX, currentMouseY;
|
int mouseX, mouseY, currentMouseX, currentMouseY;
|
||||||
bool result, mouseDown, keyDown, buttonQ, buttonD, buttonZ, buttonS, buttonA, buttonE;
|
bool result, leftMouseDown, rightMouseDown, keyDown, buttonQ, buttonD, buttonZ, buttonS, buttonA, buttonE;
|
||||||
float rotationY, rotationX, positionX, positionY, positionZ;
|
float rotationY, rotationX, positionX, positionY, positionZ;
|
||||||
|
|
||||||
float frameTime;
|
float frameTime;
|
||||||
@ -649,6 +649,10 @@ bool ApplicationClass::Frame(InputClass* Input)
|
|||||||
// Get the location of the mouse from the input object,
|
// Get the location of the mouse from the input object,
|
||||||
Input->GetMouseLocation(mouseX, mouseY);
|
Input->GetMouseLocation(mouseX, mouseY);
|
||||||
|
|
||||||
|
// Check if the mouse has been pressed.
|
||||||
|
leftMouseDown = Input->IsLeftMousePressed();
|
||||||
|
rightMouseDown = Input->IsRightMousePressed();
|
||||||
|
|
||||||
currentMouseX = mouseX;
|
currentMouseX = mouseX;
|
||||||
|
|
||||||
float deltaX = currentMouseX - lastMouseX; // Calculez le d<>placement de la souris
|
float deltaX = currentMouseX - lastMouseX; // Calculez le d<>placement de la souris
|
||||||
@ -669,7 +673,7 @@ bool ApplicationClass::Frame(InputClass* Input)
|
|||||||
keyDown = Input->IsRightArrowPressed();
|
keyDown = Input->IsRightArrowPressed();
|
||||||
m_Position->TurnRight(keyDown);
|
m_Position->TurnRight(keyDown);
|
||||||
|
|
||||||
m_Position->TurnMouse(deltaX, deltaY);
|
m_Position->TurnMouse(deltaX, deltaY, rightMouseDown);
|
||||||
|
|
||||||
// Get the current view point rotation.
|
// Get the current view point rotation.
|
||||||
m_Position->GetRotation(rotationY, rotationX);
|
m_Position->GetRotation(rotationY, rotationX);
|
||||||
@ -725,11 +729,8 @@ bool ApplicationClass::Frame(InputClass* Input)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the mouse has been pressed.
|
|
||||||
mouseDown = Input->IsMousePressed();
|
|
||||||
|
|
||||||
// Update the mouse strings each frame.
|
// Update the mouse strings each frame.
|
||||||
result = UpdateMouseStrings(mouseX, mouseY, mouseDown);
|
result = UpdateMouseStrings(mouseX, mouseY, leftMouseDown);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -1035,7 +1036,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
// Render the model using the light shader.
|
// Render the model using the light shader.
|
||||||
result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
|
result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
|
||||||
diffuseColor, lightPosition);
|
diffuseColor, lightPosition);
|
||||||
|
|
||||||
for (auto cube : m_cubes)
|
for (auto cube : m_cubes)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1082,7 +1083,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
diffuseColor, lightPosition);
|
diffuseColor, lightPosition);
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1101,7 +1102,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
chunk->Render(m_Direct3D->GetDeviceContext());
|
chunk->Render(m_Direct3D->GetDeviceContext());
|
||||||
|
|
||||||
result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
|
result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
|
||||||
diffuseColor, lightPosition);
|
diffuseColor, lightPosition);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -350,7 +350,7 @@ void InputClass::GetMouseLocation(int& mouseX, int& mouseY)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InputClass::IsMousePressed()
|
bool InputClass::IsLeftMousePressed()
|
||||||
{
|
{
|
||||||
// Check the left mouse button state.
|
// Check the left mouse button state.
|
||||||
if (m_mouseState.rgbButtons[0] & 0x80)
|
if (m_mouseState.rgbButtons[0] & 0x80)
|
||||||
@ -360,3 +360,14 @@ bool InputClass::IsMousePressed()
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InputClass::IsRightMousePressed()
|
||||||
|
{
|
||||||
|
// Check the left mouse button state.
|
||||||
|
if (m_mouseState.rgbButtons[1] & 0x80)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -33,7 +33,8 @@ public:
|
|||||||
|
|
||||||
bool IsEscapePressed();
|
bool IsEscapePressed();
|
||||||
void GetMouseLocation(int&, int&);
|
void GetMouseLocation(int&, int&);
|
||||||
bool IsMousePressed();
|
bool IsLeftMousePressed();
|
||||||
|
bool IsRightMousePressed();
|
||||||
void KeyDown(unsigned int);
|
void KeyDown(unsigned int);
|
||||||
void KeyUp(unsigned int);
|
void KeyUp(unsigned int);
|
||||||
bool IsLeftArrowPressed();
|
bool IsLeftArrowPressed();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user