Minor Update - ImGui tweak

[FEAT] :

~ Modification de l'interface ImGui
This commit is contained in:
CatChow0 2024-04-22 17:55:48 +02:00
parent 7ef81b9c91
commit 6316d4cb2b
14 changed files with 173 additions and 138 deletions

View File

@ -475,10 +475,10 @@ bool LightShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, X
dataPtr2 = (LightPositionBufferType*)mappedResource.pData; dataPtr2 = (LightPositionBufferType*)mappedResource.pData;
// Copy the light position variables into the constant buffer. // Copy the light position variables into the constant buffer.
dataPtr2->lightPosition[0] = lightPosition[0]; for (int i = 0; i < NUM_LIGHTS; i++)
dataPtr2->lightPosition[1] = lightPosition[1]; {
dataPtr2->lightPosition[2] = lightPosition[2]; dataPtr2->lightPosition[i] = lightPosition[i];
dataPtr2->lightPosition[3] = lightPosition[3]; }
// Unlock the constant buffer. // Unlock the constant buffer.
deviceContext->Unmap(m_lightPositionBuffer, 0); deviceContext->Unmap(m_lightPositionBuffer, 0);
@ -504,10 +504,10 @@ bool LightShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, X
dataPtr3 = (LightColorBufferType*)mappedResource.pData; dataPtr3 = (LightColorBufferType*)mappedResource.pData;
// Copy the light color variables into the constant buffer. // Copy the light color variables into the constant buffer.
dataPtr3->diffuseColor[0] = diffuseColor[0]; for (int i = 0; i < NUM_LIGHTS; i++)
dataPtr3->diffuseColor[1] = diffuseColor[1]; {
dataPtr3->diffuseColor[2] = diffuseColor[2]; dataPtr3->diffuseColor[i] = diffuseColor[i];
dataPtr3->diffuseColor[3] = diffuseColor[3]; }
// Unlock the constant buffer. // Unlock the constant buffer.
deviceContext->Unmap(m_lightColorBuffer, 0); deviceContext->Unmap(m_lightColorBuffer, 0);

View File

@ -9,7 +9,6 @@
// GLOBALS // // GLOBALS //
///////////// /////////////
const int NUM_LIGHTS = 4; const int NUM_LIGHTS = 4;
////////////// //////////////
// INCLUDES // // INCLUDES //
////////////// //////////////
@ -88,7 +87,6 @@ private:
ID3D11Buffer* m_lightBuffer; ID3D11Buffer* m_lightBuffer;
ID3D11Buffer* m_lightColorBuffer; ID3D11Buffer* m_lightColorBuffer;
ID3D11Buffer* m_lightPositionBuffer; ID3D11Buffer* m_lightPositionBuffer;
}; };
#endif #endif

View File

@ -24,7 +24,20 @@ public:
{ {
Info, Info,
Warning, Warning,
Error Error,
Shutdown,
Initialize,
Update,
Render,
Input,
Physics,
Audio,
Network,
Scripting,
AI,
Resource,
Memory,
Debug
}; };
Logger() Logger()

View File

@ -25,7 +25,7 @@ bool SystemClass::Initialize()
int screenWidth, screenHeight; int screenWidth, screenHeight;
bool result; bool result;
Logger::Get().Log("Initializing system class", __FILE__, __LINE__); Logger::Get().Log("Initializing system class", __FILE__, __LINE__, Logger::LogLevel::Initialize);
try try
{ {
@ -81,50 +81,50 @@ bool SystemClass::Initialize()
return false; return false;
} }
Logger::Get().Log("System class initialized", __FILE__, __LINE__); Logger::Get().Log("System class initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
return true; return true;
} }
void SystemClass::Shutdown() void SystemClass::Shutdown()
{ {
Logger::Get().Log("Shutting down system class", __FILE__, __LINE__); Logger::Get().Log("Shutting down system class", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
std::lock_guard<std::mutex> guard(renderMutex); std::lock_guard<std::mutex> guard(renderMutex);
// Shutdown imgui // Shutdown imgui
if (m_imguiManager) if (m_imguiManager)
{ {
Logger::Get().Log("Shutting down imgui manager", __FILE__, __LINE__); Logger::Get().Log("Shutting down imgui manager", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
m_imguiManager->Shutdown(); m_imguiManager->Shutdown();
delete m_imguiManager; delete m_imguiManager;
m_imguiManager = 0; m_imguiManager = 0;
Logger::Get().Log("Imgui manager shut down", __FILE__, __LINE__); Logger::Get().Log("Imgui manager shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
} }
// Release the application class object. // Release the application class object.
if (m_Application) if (m_Application)
{ {
Logger::Get().Log("Shutting down application", __FILE__, __LINE__); Logger::Get().Log("Shutting down application", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
m_Application->Shutdown(); m_Application->Shutdown();
delete m_Application; delete m_Application;
m_Application = 0; m_Application = 0;
Logger::Get().Log("Application shut down", __FILE__, __LINE__); Logger::Get().Log("Application shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
} }
// Release the input object. // Release the input object.
if (m_Input) if (m_Input)
{ {
Logger::Get().Log("Shutting down input", __FILE__, __LINE__); Logger::Get().Log("Shutting down input", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
delete m_Input; delete m_Input;
m_Input = 0; m_Input = 0;
Logger::Get().Log("Input shut down", __FILE__, __LINE__); Logger::Get().Log("Input shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
} }
@ -132,7 +132,7 @@ void SystemClass::Shutdown()
// Shutdown the window. // Shutdown the window.
ShutdownWindows(); ShutdownWindows();
Logger::Get().Log("System class shut down", __FILE__, __LINE__); Logger::Get().Log("System class shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
return; return;
} }
@ -328,7 +328,7 @@ void SystemClass::InitializeWindows(int& screenWidth, int& screenHeight)
DEVMODE dmScreenSettings; DEVMODE dmScreenSettings;
int posX, posY; int posX, posY;
Logger::Get().Log("Initializing windows", __FILE__, __LINE__); Logger::Get().Log("Initializing windows", __FILE__, __LINE__, Logger::LogLevel::Initialize);
// Get an external pointer to this object. // Get an external pointer to this object.
ApplicationHandle = this; ApplicationHandle = this;
@ -408,10 +408,7 @@ void SystemClass::InitializeWindows(int& screenWidth, int& screenHeight)
void SystemClass::ShutdownWindows() void SystemClass::ShutdownWindows()
{ {
Logger::Get().Log("Shutting down the windows", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
Logger::Get().Log("Shutting down windows", __FILE__, __LINE__);
Logger::Get().Log("Shutting down the windows", __FILE__, __LINE__);
// Show the mouse cursor. // Show the mouse cursor.
ShowCursor(true); ShowCursor(true);

View File

@ -197,7 +197,6 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
// Set the number of lights we will use. // Set the number of lights we will use.
m_numLights = 4; m_numLights = 4;
// Create and initialize the light objects array. // Create and initialize the light objects array.
m_Lights.resize(m_numLights); m_Lights.resize(m_numLights);
@ -208,28 +207,26 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
m_Lights[0]->SetSpecularPower(16.0f); m_Lights[0]->SetSpecularPower(16.0f);
m_Lights[0]->SetPosition(10.0f, 7.0f, -5.0f); m_Lights[0]->SetPosition(10.0f, 7.0f, -5.0f);
// Manually set the color and position of each light.
m_Lights[1] = new LightClass; m_Lights[1] = new LightClass;
m_Lights[1]->SetDiffuseColor(1.0f, 0.0f, 0.0f, 1.0f); // Red m_Lights[1]->SetDiffuseColor(1.0f, 0.0f, 0.0f, 1.0f); // Red
m_Lights[1]->SetDirection(0.0f, 0.0f, 1.0f); m_Lights[1]->SetDirection(0.0f, 0.0f, -1.0f);
m_Lights[1]->SetSpecularColor(1.0f, 0.0f, 0.0f, 1.0f); m_Lights[1]->SetSpecularColor(1.0f, 0.0f, 0.0f, 1.0f);
m_Lights[1]->SetSpecularPower(16.0f); m_Lights[1]->SetSpecularPower(16.0f);
m_Lights[1]->SetPosition(10.0f, 7.0f, -5.0f); m_Lights[1]->SetPosition(-10.0f, 7.0f, -5.0f);
m_Lights[2] = new LightClass; m_Lights[2] = new LightClass;
m_Lights[2]->SetDiffuseColor(0.0f, 1.0f, 0.0f, 1.0f); // Green m_Lights[2]->SetDiffuseColor(0.0f, 1.0f, 0.0f, 1.0f); // Green
m_Lights[2]->SetDirection(0.0f, 0.0f, 1.0f); m_Lights[2]->SetDirection(0.0f, 0.0f, -1.0f);
m_Lights[2]->SetSpecularColor(0.0f, 1.0f, 0.0f, 1.0f); m_Lights[2]->SetSpecularColor(0.0f, 1.0f, 0.0f, 1.0f);
m_Lights[2]->SetSpecularPower(16.0f); m_Lights[2]->SetSpecularPower(16.0f);
m_Lights[2]->SetPosition(10.0f, 7.0f, -5.0f); m_Lights[2]->SetPosition(10.0f, 7.0f, 5.0f);
m_Lights[3] = new LightClass; m_Lights[3] = new LightClass;
m_Lights[3]->SetDiffuseColor(0.0f, 0.0f, 1.0f, 1.0f); // Blue m_Lights[3]->SetDiffuseColor(0.0f, 0.0f, 1.0f, 1.0f); // Blue
m_Lights[3]->SetDirection(0.0f, 0.0f, 1.0f); m_Lights[3]->SetDirection(0.0f, 0.0f, -1.0f);
m_Lights[3]->SetSpecularColor(0.0f, 0.0f, 1.0f, 1.0f); m_Lights[3]->SetSpecularColor(0.0f, 0.0f, 1.0f, 1.0f);
m_Lights[3]->SetSpecularPower(16.0f); m_Lights[3]->SetSpecularPower(16.0f);
m_Lights[3]->SetPosition(10.0f, 7.0f, -5.0f); m_Lights[3]->SetPosition(-10.0f, 7.0f, 5.0f);
// Create and initialize the normal map shader object. // Create and initialize the normal map shader object.
m_ShaderManager = new ShaderManagerClass; m_ShaderManager = new ShaderManagerClass;
@ -666,7 +663,7 @@ bool ApplicationClass::RenderSceneToTexture(float rotation)
m_Model->Render(m_Direct3D->GetDeviceContext()); m_Model->Render(m_Direct3D->GetDeviceContext());
result = m_ShaderManager->RenderTextureShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, result = m_ShaderManager->RenderTextureShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix,
m_Model->GetTexture(1)); m_Model->GetTexture(0));
if (!result) if (!result)
{ {
return false; return false;
@ -745,7 +742,15 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t
cube->Render(m_Direct3D->GetDeviceContext()); cube->Render(m_Direct3D->GetDeviceContext());
result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), // render the texture using the texture shader.
result = m_ShaderManager->RenderTextureShader(m_Direct3D->GetDeviceContext(), cube->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, cube->GetTexture(0));
if (!result)
{
Logger::Get().Log("Could not render the cube model using the texture shader", __FILE__, __LINE__, Logger::LogLevel::Error);
return false;
}
result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, cube->GetTexture(0),
diffuseColor, lightPosition); diffuseColor, lightPosition);
if (!result) if (!result)
{ {
@ -769,6 +774,14 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t
object->Render(m_Direct3D->GetDeviceContext()); object->Render(m_Direct3D->GetDeviceContext());
// render the texture using the texture shader.
result = m_ShaderManager->RenderTextureShader(m_Direct3D->GetDeviceContext(), object->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, object->GetTexture(0));
if (!result)
{
Logger::Get().Log("Could not render the cube model using the texture shader", __FILE__, __LINE__, Logger::LogLevel::Error);
return false;
}
result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), result = m_ShaderManager->RenderlightShader(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
diffuseColor, lightPosition); diffuseColor, lightPosition);
@ -1474,60 +1487,4 @@ void ApplicationClass::SetLightPosition(int index, XMVECTOR position)
//set the position //set the position
m_Lights[index]->SetPosition(lightPosition.x, lightPosition.y, lightPosition.z); m_Lights[index]->SetPosition(lightPosition.x, lightPosition.y, lightPosition.z);
} }
void ApplicationClass::DeleteLight(int index)
{
Logger::Get().Log("Deleting light", __FILE__, __LINE__);
if (index < 0 || index >= m_Lights.size())
{
// Index out of bounds
return;
}
// Delete the light object
delete m_Lights[index];
// Remove the light from the vector
m_Lights.erase(m_Lights.begin() + index);
// Decrement the number of lights
m_numLights--;
// Update the light position and color
for (int i = 0; i < m_numLights; i++)
{
m_Lights[i]->SetPosition(i * 10.0f, 10.0f, -10.0f);
m_Lights[i]->SetDiffuseColor(1.0f, 1.0f, 1.0f, 1.0f);
}
}
void ApplicationClass::AddLight()
{
Logger::Get().Log("Adding light", __FILE__, __LINE__);
// Create a new light object
LightClass* newLight = new LightClass();
// Set the light position
newLight->SetPosition(m_numLights * 10.0f, 10.0f, -10.0f);
// Set the light color
newLight->SetDiffuseColor(1.0f, 1.0f, 1.0f, 1.0f);
// Set the light direction
newLight->SetDirection(0.0f, 0.0f, 1.0f);
// Set the light specular color
newLight->SetSpecularColor(1.0f, 1.0f, 1.0f, 1.0f);
// Set the light specular power
newLight->SetSpecularPower(16.0f);
// Add the light to the vector
m_Lights.push_back(newLight);
// Increment the number of lights
m_numLights++;
}

View File

@ -81,7 +81,6 @@ public:
void DeleteLight(int index); void DeleteLight(int index);
void AddLight(); void AddLight();
std::vector<LightClass*> GetLights() const { return m_Lights; }; std::vector<LightClass*> GetLights() const { return m_Lights; };
bool GetShouldQuit() const { return m_ShouldQuit; }; bool GetShouldQuit() const { return m_ShouldQuit; };
void SetShouldQuit(bool shouldQuit) { m_ShouldQuit = shouldQuit; }; void SetShouldQuit(bool shouldQuit) { m_ShouldQuit = shouldQuit; };

View File

@ -3,18 +3,18 @@ Pos=60,60
Size=400,400 Size=400,400
[Window][Khaotic Engine] [Window][Khaotic Engine]
Pos=30,173 Pos=219,17
Size=392,218 Size=392,218
[Window][Objects] [Window][Objects]
Pos=39,222 Pos=916,66
Size=379,299 Size=637,299
[Window][Terrain] [Window][Terrain]
Pos=397,130 Pos=397,130
Size=342,82 Size=342,82
[Window][Light] [Window][Light]
Pos=34,172 Pos=941,159
Size=345,230 Size=345,230

View File

@ -15,12 +15,15 @@ bool imguiManager::Initialize(HWND hwnd, ID3D11Device* device, ID3D11DeviceConte
{ {
Logger::Get().Log("Initializing imgui", __FILE__, __LINE__); Logger::Get().Log("Initializing imgui", __FILE__, __LINE__);
m_device = device;
m_deviceContext = deviceContext;
IMGUI_CHECKVERSION(); IMGUI_CHECKVERSION();
ImGui::CreateContext(); ImGui::CreateContext();
io = &ImGui::GetIO(); io = &ImGui::GetIO();
ImGui_ImplWin32_Init(hwnd); ImGui_ImplWin32_Init(hwnd);
ImGui_ImplDX11_Init(device, deviceContext); ImGui_ImplDX11_Init(m_device, m_deviceContext);
ImGui::StyleColorsDark(); ImGui::StyleColorsDark();
Logger::Get().Log("imgui initialized", __FILE__, __LINE__); Logger::Get().Log("imgui initialized", __FILE__, __LINE__);
@ -88,7 +91,7 @@ void imguiManager::WidgetAddObject(ApplicationClass* app)
ofn.lpstrFile = szFile; ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0'; ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile); ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"OBJ\0*.obj\0TXT\0*.txt\0KOBJ\0*.kobj"; ofn.lpstrFilter = L"TXT\0*.txt\0KOBJ\0*.kobj\0*OBJ\0*.obj";
ofn.nFilterIndex = 1; ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL; ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0; ofn.nMaxFileTitle = 0;
@ -110,7 +113,6 @@ void imguiManager::WidgetObjectWindow(ApplicationClass* app)
{ {
ImGui::Begin("Objects", &showObjectWindow); ImGui::Begin("Objects", &showObjectWindow);
int index = 0; int index = 0;
int count = 0;
for (auto& object : app->GetKobjects()) for (auto& object : app->GetKobjects())
{ {
std::string headerName = object->GetName() + " " + std::to_string(index); std::string headerName = object->GetName() + " " + std::to_string(index);
@ -145,17 +147,80 @@ void imguiManager::WidgetObjectWindow(ApplicationClass* app)
ImGui::Separator(); ImGui::Separator();
// Texture // Texture
std::string textureLabel = "Texture##" + std::to_string(index); // add all texture category names to a vector
ID3D11ShaderResourceView* texture = object->GetTexture(0); std::vector<std::string> textureCategories = { "Diffuse", "Normal", "Specular", "Alpha", "Light", "Change Me" };
if (texture != nullptr)
for (int count = 0; count < 6; count++)
{ {
if (ImGui::ImageButton((ImTextureID)texture, ImVec2(64, 64))) std::string textureLabel = "Texture##" + std::to_string(index);
ID3D11ShaderResourceView* texture = object->GetTexture(count);
if (texture != nullptr)
{ {
count++; // Set the cursor position
ImGui::SetCursorPosX(count * (64 + 20) + 10); // 64 is the width of the image, 10 is the spacing
// Display the texture name
std::string textureName = textureCategories[count];
ImGui::Text(textureName.c_str());
if(count < 5)
{
ImGui::SameLine();
}
} }
} }
ImGui::Text("Texture count: %d", count);
// Display all images
for (int count = 0; count < 6; count++)
{
std::string textureLabel = "Texture##" + std::to_string(index);
ID3D11ShaderResourceView* texture = object->GetTexture(count);
if (texture != nullptr)
{
// Set the cursor position
ImGui::SetCursorPosX(count * (64 + 20) + 10); // 64 is the width of the image, 10 is the spacing
if (ImGui::ImageButton((ImTextureID)texture, ImVec2(64, 64)))
{
// Open file dialog
OPENFILENAME ofn;
WCHAR szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"Texture\0*.tga\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn))
{
// Load the selected texture
object->ChangeTexture(m_device, m_deviceContext, ofn.lpstrFile, index);
}
}
if (ImGui::IsItemHovered())
{
ImGui::BeginTooltip();
ImGui::Image((ImTextureID)texture, ImVec2(256, 256));
ImGui::EndTooltip();
}
// If this is not the last texture, put the next button on the same line
if (count < 5)
{
ImGui::SameLine();
}
}
}
ImGui::Separator(); ImGui::Separator();
@ -261,11 +326,6 @@ void imguiManager::WidgetLightWindow(ApplicationClass* app)
{ {
ImGui::Begin("Light", &showLightWindow); ImGui::Begin("Light", &showLightWindow);
int index = 0; int index = 0;
// add light button
if (ImGui::Button("Add Light"))
{
app->AddLight();
}
for(auto& light : app->GetLights()) for(auto& light : app->GetLights())
{ {
@ -291,15 +351,6 @@ void imguiManager::WidgetLightWindow(ApplicationClass* app)
} }
ImGui::Separator(); ImGui::Separator();
// Delete button
std::string deleteLabel = "Delete##" + std::to_string(index);
if (ImGui::Button(deleteLabel.c_str()))
{
app->DeleteLight(index);
}
ImGui::Separator();
} }
index++; index++;
}; };

View File

@ -42,6 +42,9 @@ private :
private: private:
ImGuiIO* io; ImGuiIO* io;
ID3D11Device* m_device;
ID3D11DeviceContext* m_deviceContext;
}; };
#endif #endif

View File

@ -475,10 +475,10 @@ bool LightShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, X
dataPtr2 = (LightPositionBufferType*)mappedResource.pData; dataPtr2 = (LightPositionBufferType*)mappedResource.pData;
// Copy the light position variables into the constant buffer. // Copy the light position variables into the constant buffer.
dataPtr2->lightPosition[0] = lightPosition[0]; for (int i = 0; i < NUM_LIGHTS; i++)
dataPtr2->lightPosition[1] = lightPosition[1]; {
dataPtr2->lightPosition[2] = lightPosition[2]; dataPtr2->lightPosition[i] = lightPosition[i];
dataPtr2->lightPosition[3] = lightPosition[3]; }
// Unlock the constant buffer. // Unlock the constant buffer.
deviceContext->Unmap(m_lightPositionBuffer, 0); deviceContext->Unmap(m_lightPositionBuffer, 0);
@ -504,10 +504,10 @@ bool LightShaderClass::SetShaderParameters(ID3D11DeviceContext* deviceContext, X
dataPtr3 = (LightColorBufferType*)mappedResource.pData; dataPtr3 = (LightColorBufferType*)mappedResource.pData;
// Copy the light color variables into the constant buffer. // Copy the light color variables into the constant buffer.
dataPtr3->diffuseColor[0] = diffuseColor[0]; for (int i = 0; i < NUM_LIGHTS; i++)
dataPtr3->diffuseColor[1] = diffuseColor[1]; {
dataPtr3->diffuseColor[2] = diffuseColor[2]; dataPtr3->diffuseColor[i] = diffuseColor[i];
dataPtr3->diffuseColor[3] = diffuseColor[3]; }
// Unlock the constant buffer. // Unlock the constant buffer.
deviceContext->Unmap(m_lightColorBuffer, 0); deviceContext->Unmap(m_lightColorBuffer, 0);

View File

@ -9,7 +9,6 @@
// GLOBALS // // GLOBALS //
///////////// /////////////
const int NUM_LIGHTS = 4; const int NUM_LIGHTS = 4;
////////////// //////////////
// INCLUDES // // INCLUDES //
////////////// //////////////
@ -88,7 +87,6 @@ private:
ID3D11Buffer* m_lightBuffer; ID3D11Buffer* m_lightBuffer;
ID3D11Buffer* m_lightColorBuffer; ID3D11Buffer* m_lightColorBuffer;
ID3D11Buffer* m_lightPositionBuffer; ID3D11Buffer* m_lightPositionBuffer;
}; };
#endif #endif

View File

@ -399,7 +399,6 @@ void ModelClass::CalculateModelVectors()
void ModelClass::CalculateTangentBinormal(TempVertexType vertex1, TempVertexType vertex2, TempVertexType vertex3, VectorType& tangent, VectorType& binormal) void ModelClass::CalculateTangentBinormal(TempVertexType vertex1, TempVertexType vertex2, TempVertexType vertex3, VectorType& tangent, VectorType& binormal)
{ {
Logger::Get().Log("Calculating tangent and binormal", __FILE__, __LINE__);
float vector1[3], vector2[3]; float vector1[3], vector2[3];
float tuVector[2], tvVector[2]; float tuVector[2], tvVector[2];
@ -451,8 +450,6 @@ void ModelClass::CalculateTangentBinormal(TempVertexType vertex1, TempVertexType
binormal.y = binormal.y / length; binormal.y = binormal.y / length;
binormal.z = binormal.z / length; binormal.z = binormal.z / length;
Logger::Get().Log("Tangent and binormal calculated", __FILE__, __LINE__);
return; return;
} }
@ -469,4 +466,27 @@ void ModelClass::ReleaseModel()
Logger::Get().Log("Model released", __FILE__, __LINE__); Logger::Get().Log("Model released", __FILE__, __LINE__);
return; return;
}
bool ModelClass::ChangeTexture(ID3D11Device* device, ID3D11DeviceContext* deviceContext, std::wstring filename, int index)
{
bool result;
// convert wstring to string
std::string str(filename.begin(), filename.end());
// Release the old texture object.
m_Textures[index].Shutdown();
// Initialize the new texture object.
result = m_Textures[index].Initialize(device, deviceContext, str);
if (!result)
{
Logger::Get().Log("Failed to initialize texture", __FILE__, __LINE__, Logger::LogLevel::Error);
return false;
}
Logger::Get().Log("Texture changed", __FILE__, __LINE__);
return true;
} }

View File

@ -88,6 +88,7 @@ public:
int GetIndexCount(); int GetIndexCount();
ID3D11ShaderResourceView* GetTexture(int); ID3D11ShaderResourceView* GetTexture(int);
bool ChangeTexture(ID3D11Device*, ID3D11DeviceContext*, std::wstring filename, int index);
private: private:
bool InitializeBuffers(ID3D11Device*); bool InitializeBuffers(ID3D11Device*);

View File

@ -13,8 +13,6 @@
#include "transparentshaderclass.h" #include "transparentshaderclass.h"
#include "lightshaderclass.h" #include "lightshaderclass.h"
#include "lightmapshaderclass.h" #include "lightmapshaderclass.h"
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Class name: ShaderManagerClass // Class name: ShaderManagerClass
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////