diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj
index 3b206e1..a7dab41 100644
--- a/Game/Game.vcxproj
+++ b/Game/Game.vcxproj
@@ -1,14 +1,6 @@
-
- Debug
- Win32
-
-
- Release
- Win32
-
Debug
x64
@@ -26,19 +18,6 @@
10.0
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v142
- true
- Unicode
-
Application
true
@@ -57,12 +36,6 @@
-
-
-
-
-
-
@@ -70,16 +43,6 @@
-
- true
- $(ProjectDir)bin\$(Platform)$(Configuration)\
- $(ProjectDir)int\$(Platform)$(Configuration)\
-
-
- false
- $(ProjectDir)bin\$(Platform)$(Configuration)\
- $(ProjectDir)int\$(Platform)$(Configuration)\
-
true
$(ProjectDir)bin\$(Platform)$(Configuration)\
@@ -90,51 +53,6 @@
$(ProjectDir)bin\$(Platform)$(Configuration)\
$(ProjectDir)int\$(Platform)$(Configuration)\
-
-
- Level3
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)src\include\;$(SolutionDir)NothinFancy\src\include\
- $(IntDir)obj\
-
-
- Console
- true
- mainCRTStartup
- libcmt.lib
- /ignore:4099 %(AdditionalOptions)
-
-
- cd "$(SolutionDir)NFPackCreator\AssetBuild" && "$(SolutionDir)NFPackCreator\bin\Win32$(Configuration)\NFPackCreator.exe" && del "$(OutDir)assets\" /Q /S && move "$(SolutionDir)NFPackCreator\AssetBuild\*.nfpack" "$(OutDir)assets\"
-
-
-
-
- Level3
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)src\include\;$(SolutionDir)NothinFancy\src\include\
- $(IntDir)obj\
-
-
- Windows
- true
- true
- true
- mainCRTStartup
- libcmt.lib
- /ignore:4099 %(AdditionalOptions)
- true
-
-
- cd "$(SolutionDir)NFPackCreator\AssetBuild" && "$(SolutionDir)NFPackCreator\bin\Win32$(Configuration)\NFPackCreator.exe" && del "$(OutDir)assets\" /Q /S && move "$(SolutionDir)NFPackCreator\AssetBuild\*.nfpack" "$(OutDir)assets\"
-
-
Level3
@@ -152,7 +70,12 @@
/ignore:4099 %(AdditionalOptions)
- cd "$(SolutionDir)NFPackCreator\AssetBuild" && "$(SolutionDir)NFPackCreator\bin\Win32$(Configuration)\NFPackCreator.exe" && del "$(OutDir)assets\" /Q /S && move "$(SolutionDir)NFPackCreator\AssetBuild\*.nfpack" "$(OutDir)assets\"
+ cd "$(SolutionDir)NFPackCreator\AssetBuild"
+"$(SolutionDir)NFPackCreator\bin\x64$(Configuration)\NFPackCreator.exe"
+if exist "$(OutDir)assets" (rmdir "$(OutDir)assets" /S /Q && goto end) else goto end
+:end
+mkdir "$(OutDir)assets"
+move "*.nfpack" "$(OutDir)assets\"
@@ -177,7 +100,12 @@
true
- cd "$(SolutionDir)NFPackCreator\AssetBuild" && "$(SolutionDir)NFPackCreator\bin\Win32$(Configuration)\NFPackCreator.exe" && del "$(OutDir)assets\" /Q /S && move "$(SolutionDir)NFPackCreator\AssetBuild\*.nfpack" "$(OutDir)assets\"
+ cd "$(SolutionDir)NFPackCreator\AssetBuild"
+"$(SolutionDir)NFPackCreator\bin\x64$(Configuration)\NFPackCreator.exe"
+if exist "$(OutDir)assets" (rmdir "$(OutDir)assets" /S /Q && goto end) else goto end
+:end
+mkdir "$(OutDir)assets"
+move "*.nfpack" "$(OutDir)assets\"
@@ -207,5 +135,6 @@
<_delete Include="$(OutDir)**\*" />
+
\ No newline at end of file
diff --git a/Game/Game.vcxproj.user b/Game/Game.vcxproj.user
index 9eb418d..2c303bf 100644
--- a/Game/Game.vcxproj.user
+++ b/Game/Game.vcxproj.user
@@ -3,14 +3,6 @@
true
-
- $(OutDir)
- WindowsLocalDebugger
-
-
- $(OutDir)
- WindowsLocalDebugger
-
$(OutDir)
WindowsLocalDebugger
diff --git a/Game/src/MainState.cpp b/Game/src/MainState.cpp
index 48ba288..79465b8 100644
--- a/Game/src/MainState.cpp
+++ b/Game/src/MainState.cpp
@@ -20,6 +20,7 @@ void MainState::onEnter() {
cm.create(nf::BaseAssets::cubemap);
sound.create(ap["sound.wav"]);
+ sound.setEntity(test);
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 10; y++) {
@@ -66,7 +67,7 @@ void MainState::update(double deltaTime) {
if (button.isClicked())
app->changeState("Main State");
- if (button2.isClicked())
+ if (app->isKeyPressed(NFI_SPACE))
sound.play();
if (app->isKeyPressed(NFI_ESCAPE))
diff --git a/NFPackCreator/NFPackCreator.vcxproj b/NFPackCreator/NFPackCreator.vcxproj
index 1959143..539fe17 100644
--- a/NFPackCreator/NFPackCreator.vcxproj
+++ b/NFPackCreator/NFPackCreator.vcxproj
@@ -1,13 +1,13 @@
-
+
Debug
- Win32
+ x64
-
+
Release
- Win32
+ x64
@@ -18,13 +18,13 @@
10.0
-
+
Application
true
v142
Unicode
-
+
Application
false
v142
@@ -36,24 +36,24 @@
-
+
-
+
-
+
true
$(ProjectDir)bin\$(Platform)$(Configuration)\
$(ProjectDir)int\$(Platform)$(Configuration)\
-
+
false
$(ProjectDir)bin\$(Platform)$(Configuration)\
$(ProjectDir)int\$(Platform)$(Configuration)\
-
+
Level3
true
@@ -66,7 +66,7 @@
true
-
+
Level3
true
diff --git a/NFPackCreator/NFPackCreator.vcxproj.user b/NFPackCreator/NFPackCreator.vcxproj.user
index 67e52a5..d54cb99 100644
--- a/NFPackCreator/NFPackCreator.vcxproj.user
+++ b/NFPackCreator/NFPackCreator.vcxproj.user
@@ -3,11 +3,11 @@
true
-
+
$(OutDir)
WindowsLocalDebugger
-
+
$(OutDir)
WindowsLocalDebugger
-h
diff --git a/NFPackCreator/src/main.cpp b/NFPackCreator/src/main.cpp
index 9f18b7f..f6e73c5 100644
--- a/NFPackCreator/src/main.cpp
+++ b/NFPackCreator/src/main.cpp
@@ -66,7 +66,7 @@ void writeFile(const std::string& filename, const std::string& in, bool encrypte
void getNeededImages(std::string mtl, std::set& set) {
while (mtl.size()) {
- unsigned int pos = mtl.find("map_");
+ size_t pos = mtl.find("map_");
if (pos == std::string::npos)
break;
if (pos == mtl.find("map_Kd") || pos == mtl.find("map_Ks"))
@@ -76,7 +76,7 @@ void getNeededImages(std::string mtl, std::set& set) {
std::stringstream ss(mtl);
std::string temp;
ss >> temp;
- unsigned int pos2 = temp.find_last_of("/\\");
+ size_t pos2 = temp.find_last_of("/\\");
if (pos2 != std::string::npos)
temp = temp.substr(pos2 + 1);
set.insert(temp);
diff --git a/NothinFancy/NothinFancy.vcxproj b/NothinFancy/NothinFancy.vcxproj
index e710a5e..badb094 100644
--- a/NothinFancy/NothinFancy.vcxproj
+++ b/NothinFancy/NothinFancy.vcxproj
@@ -1,14 +1,6 @@
-
- Debug
- Win32
-
-
- Release
- Win32
-
Debug
x64
@@ -26,19 +18,6 @@
10.0
-
- StaticLibrary
- true
- v142
- Unicode
-
-
- StaticLibrary
- false
- v142
- true
- Unicode
-
StaticLibrary
true
@@ -57,12 +36,6 @@
-
-
-
-
-
-
@@ -70,16 +43,6 @@
-
- true
- $(ProjectDir)bin\$(Platform)$(Configuration)\
- $(ProjectDir)int\$(Platform)$(Configuration)\
-
-
- false
- $(ProjectDir)bin\$(Platform)$(Configuration)\
- $(ProjectDir)int\$(Platform)$(Configuration)\
-
true
$(ProjectDir)bin\$(Platform)$(Configuration)\
@@ -90,58 +53,6 @@
$(ProjectDir)bin\$(Platform)$(Configuration)\
$(ProjectDir)int\$(Platform)$(Configuration)\
-
-
- Level3
- true
- NFENGINE; GLEW_STATIC;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)src\include\;$(ProjectDir)dep\include\
- $(IntDir)obj\
-
-
- Console
- true
-
-
- glew32s.lib;opengl32.lib;freetype.lib;%(AdditionalDependencies)
-
-
- $(ProjectDir)dep\lib\;%(AdditionalLibraryDirectories)
-
-
- true
-
-
-
-
-
- Level3
- true
- true
- true
- NFENGINE; GLEW_STATIC;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- $(ProjectDir)src\include\;$(ProjectDir)dep\include\
- $(IntDir)obj\
-
-
- Console
- true
- true
- true
-
-
- glew32s.lib;opengl32.lib;freetype.lib;%(AdditionalDependencies)
-
-
- $(ProjectDir)dep\lib\;%(AdditionalLibraryDirectories)
-
-
- true
-
-
-
Level3
@@ -156,10 +67,11 @@
true
- glew32s.lib;opengl32.lib;freetype.lib;%(AdditionalDependencies)
+ glew32s.lib;opengl32.lib;freetype.lib;xaudio2.lib;%(AdditionalDependencies)
- $(ProjectDir)dep\lib\;%(AdditionalLibraryDirectories)
+ $(ProjectDir)dep\lib;%(AdditionalLibraryDirectories)
+ /ignore:4006 %(AdditionalOptions)
true
@@ -184,10 +96,11 @@
true
- glew32s.lib;opengl32.lib;freetype.lib;%(AdditionalDependencies)
+ glew32s.lib;opengl32.lib;freetype.lib;xaudio2.lib;%(AdditionalDependencies)
- $(ProjectDir)dep\lib\;%(AdditionalLibraryDirectories)
+ $(ProjectDir)dep\lib;%(AdditionalLibraryDirectories)
+ /ignore:4006 %(AdditionalOptions)
true
diff --git a/NothinFancy/dep/lib/freetype.lib b/NothinFancy/dep/lib/freetype.lib
index bbfaf4c..cdf3193 100644
Binary files a/NothinFancy/dep/lib/freetype.lib and b/NothinFancy/dep/lib/freetype.lib differ
diff --git a/NothinFancy/dep/lib/glew32s.lib b/NothinFancy/dep/lib/glew32s.lib
index 2e46b7b..584c462 100644
Binary files a/NothinFancy/dep/lib/glew32s.lib and b/NothinFancy/dep/lib/glew32s.lib differ
diff --git a/NothinFancy/src/Application.cpp b/NothinFancy/src/Application.cpp
index 8430e1a..f826064 100644
--- a/NothinFancy/src/Application.cpp
+++ b/NothinFancy/src/Application.cpp
@@ -312,8 +312,8 @@ namespace nf {
}
}
}
- m_currentState->onExit();
delete m_audio;
+ m_currentState->onExit();
m_currentState->cleanup();
delete m_renderer;
}
diff --git a/NothinFancy/src/Assets.cpp b/NothinFancy/src/Assets.cpp
index 2174f17..90f5706 100644
--- a/NothinFancy/src/Assets.cpp
+++ b/NothinFancy/src/Assets.cpp
@@ -57,15 +57,15 @@ namespace nf {
unsigned int cubemapCount = 0;
unsigned int buttonCount = 0;
while (packContents.size()) {
- unsigned int startingPos = packContents.find_first_of("#NFASSET ") + 9;
+ size_t startingPos = packContents.find_first_of("#NFASSET ") + 9;
packContents = packContents.substr(9);
- unsigned int endAssetNamePos = packContents.find_first_of('\n');
+ size_t endAssetNamePos = packContents.find_first_of('\n');
std::string assetName = packContents.substr(0, endAssetNamePos);
packContents = packContents.substr(endAssetNamePos + 1);
- unsigned int extensionPos = assetName.find_first_of('.');
+ size_t extensionPos = assetName.find_first_of('.');
std::string extension = assetName.substr(extensionPos + 1);
std::string assetContents;
- unsigned int nextAssetPos = packContents.find("#NFASSET ");
+ size_t nextAssetPos = packContents.find("#NFASSET ");
if (nextAssetPos != std::string::npos) {
assetContents = packContents.substr(0, nextAssetPos - 1);
packContents = packContents.substr(nextAssetPos);
@@ -74,7 +74,7 @@ namespace nf {
assetContents = packContents;
packContents = "";
}
- size_t assetSize = assetContents.size();
+ unsigned int assetSize = (unsigned int)assetContents.size();
if (extension == "obj")
continue;
@@ -204,15 +204,15 @@ namespace nf {
Error("Could not find full button set in pack \"" + (std::string)packName + (std::string)"\"!");
while (packContentsOBJ.size()) {
- unsigned int startingPos = packContentsOBJ.find_first_of("#NFASSET ") + 9;
+ size_t startingPos = packContentsOBJ.find_first_of("#NFASSET ") + 9;
packContentsOBJ = packContentsOBJ.substr(9);
- unsigned int endAssetNamePos = packContentsOBJ.find_first_of('\n');
+ size_t endAssetNamePos = packContentsOBJ.find_first_of('\n');
std::string assetName = packContentsOBJ.substr(0, endAssetNamePos);
packContentsOBJ = packContentsOBJ.substr(endAssetNamePos + 1);
- unsigned int extensionPos = assetName.find_first_of('.');
+ size_t extensionPos = assetName.find_first_of('.');
std::string extension = assetName.substr(extensionPos + 1);
std::string assetContents;
- unsigned int nextAssetPos = packContentsOBJ.find("#NFASSET ");
+ size_t nextAssetPos = packContentsOBJ.find("#NFASSET ");
if (nextAssetPos != std::string::npos) {
assetContents = packContentsOBJ.substr(0, nextAssetPos - 1);
packContentsOBJ = packContentsOBJ.substr(nextAssetPos);
diff --git a/NothinFancy/src/AudioEngine.cpp b/NothinFancy/src/AudioEngine.cpp
index 12bc307..5f27c80 100644
--- a/NothinFancy/src/AudioEngine.cpp
+++ b/NothinFancy/src/AudioEngine.cpp
@@ -15,6 +15,9 @@ namespace nf {
debug.BreakMask = XAUDIO2_LOG_ERRORS;
m_engine->SetDebugConfiguration(&debug, 0);
m_engine->CreateMasteringVoice(&m_masterVoice);
+ DWORD channelMask;
+ m_masterVoice->GetChannelMask(&channelMask);
+ X3DAudioInitialize(channelMask, X3DAUDIO_SPEED_OF_SOUND, m_x3d);
}
void AudioEngine::updateSources() {
@@ -33,11 +36,19 @@ namespace nf {
IXAudio2SourceVoice* AudioEngine::getNewSourceVoice(WAVEFORMATEXTENSIBLE* fmt) {
IXAudio2SourceVoice* s;
- HRESULT hr = m_engine->CreateSourceVoice(&s, &fmt->Format);
+ HRESULT hr = m_engine->CreateSourceVoice(&s, &fmt->Format, XAUDIO2_VOICE_USEFILTER);
m_voices.push_back(s);
return s;
}
+ IXAudio2MasteringVoice* AudioEngine::getMasterVoice() {
+ return m_masterVoice;
+ }
+
+ X3DAUDIO_HANDLE* AudioEngine::getX3DAudioInstance() {
+ return &m_x3d;
+ }
+
void AudioEngine::cleanup() {
for (unsigned int i = 0; i < m_voices.size(); i++) {
m_voices[i]->Stop();
diff --git a/NothinFancy/src/NFObject/Entity.cpp b/NothinFancy/src/NFObject/Entity.cpp
index 2d4c16c..c61cc7e 100644
--- a/NothinFancy/src/NFObject/Entity.cpp
+++ b/NothinFancy/src/NFObject/Entity.cpp
@@ -69,6 +69,10 @@ namespace nf {
m_scale = scale;
}
+ const Vec3& Entity::getPosition() {
+ return m_position;
+ }
+
void Entity::render(Shader* shader, bool onlyDepth) {
shader->bind();
glm::mat4 model = getModelMatrix();
diff --git a/NothinFancy/src/NFObject/Sound.cpp b/NothinFancy/src/NFObject/Sound.cpp
index 5f1c6d8..cfd7a42 100644
--- a/NothinFancy/src/NFObject/Sound.cpp
+++ b/NothinFancy/src/NFObject/Sound.cpp
@@ -2,6 +2,7 @@
#include "Application.h"
#include "Assets.h"
+#include "Entity.h"
#include "Utility.h"
namespace nf {
@@ -9,9 +10,12 @@ namespace nf {
m_constructed(false),
m_dataSize(0),
m_volume(1.0f),
+ m_usePos(false),
m_format({ 0 }),
m_buffer(nullptr),
- m_currentVoice(nullptr)
+ m_currentVoice(nullptr),
+ m_targetEntity(nullptr),
+ m_soundPos(0.0)
{
}
@@ -27,17 +31,21 @@ namespace nf {
if (data.find("RIFF") == std::string::npos)
Error("Sound asset not of correct format!");
unsigned int fileSize = *(unsigned int*)&data[4];
- unsigned int fmtPos;
+ size_t fmtPos;
if ((fmtPos = data.find("fmt")) == std::string::npos)
Error("Sound asset not of correct format!");
std::memcpy(&m_format, &data[fmtPos + 8], 16);
- unsigned int dataPos;
+ size_t dataPos;
if ((dataPos = data.find("data")) == std::string::npos)
Error("Sound asset not of correct m_format!");
m_dataSize = *(unsigned int*)&data[dataPos + 4];
m_buffer = new unsigned char[m_dataSize];
std::memcpy(m_buffer, &data[dataPos + 8], m_dataSize);
+ m_emitter = { 0 };
+ m_emitter.ChannelCount = 2;
+ m_emitter.CurveDistanceScaler = 1.0;
+
Application::getApp()->getCurrentState()->m_nfObjects.push_back(this);
}
@@ -45,6 +53,16 @@ namespace nf {
m_volume = (float)volume;
}
+ void Sound::setEntity(Entity& entity) {
+ m_targetEntity = &entity;
+ m_usePos = false;
+ }
+
+ void Sound::setPosition(const Vec3& position) {
+ m_soundPos = position;
+ m_usePos = true;
+ }
+
void Sound::play(bool loop) {
m_currentVoice = Application::getApp()->getAudioEngine()->getNewSourceVoice(&m_format);
m_currentVoice->SetVolume(m_volume);
@@ -54,6 +72,41 @@ namespace nf {
xBuffer.AudioBytes = m_dataSize;
if (loop)
xBuffer.LoopCount = XAUDIO2_LOOP_INFINITE;
+
+ if (m_usePos || m_targetEntity) {
+ if (m_usePos)
+ m_emitter.Position = X3DAUDIO_VECTOR((float)m_soundPos.x, (float)m_soundPos.y, (float)-m_soundPos.z);
+ else if (m_targetEntity) {
+ Vec3 temp = m_targetEntity->getPosition();
+ m_emitter.Position = X3DAUDIO_VECTOR((float)temp.x, (float)temp.y, (float)-temp.z);
+ }
+ m_emitter.OrientFront = X3DAUDIO_VECTOR(0.0, 0.0, 1.0);
+ m_emitter.OrientTop = X3DAUDIO_VECTOR(0.0, 1.0, 0.0);
+ float az[2] = { 0 };
+ m_emitter.pChannelAzimuths = az;
+ Vec3 temp = Application::getApp()->getCurrentState()->getCamera()->getPosition();
+ m_listener.Position = X3DAUDIO_VECTOR((float)temp.x, (float)temp.y, (float)-temp.z);
+ temp = Application::getApp()->getCurrentState()->getCamera()->getRotation();
+ m_listener.OrientFront = X3DAUDIO_VECTOR((float)temp.x, 0.0f, (float)-temp.z);
+ m_listener.OrientTop = X3DAUDIO_VECTOR(0.0, 1.0, 0.0);
+ X3DAUDIO_DSP_SETTINGS settings = { 0 };
+ settings.SrcChannelCount = 2;
+ settings.DstChannelCount = 2;
+ float matrix[4] = { 0 };
+ settings.pMatrixCoefficients = matrix;
+
+ IXAudio2MasteringVoice* master = Application::getApp()->getAudioEngine()->getMasterVoice();
+ X3DAUDIO_HANDLE* instance = Application::getApp()->getAudioEngine()->getX3DAudioInstance();
+ X3DAudioCalculate(*instance, &m_listener, &m_emitter, X3DAUDIO_CALCULATE_MATRIX | X3DAUDIO_CALCULATE_DOPPLER | X3DAUDIO_CALCULATE_LPF_DIRECT | X3DAUDIO_CALCULATE_REVERB, &settings);
+ float temp2 = settings.pMatrixCoefficients[1];
+ settings.pMatrixCoefficients[1] = settings.pMatrixCoefficients[2];
+ settings.pMatrixCoefficients[2] = temp2;
+ m_currentVoice->SetOutputMatrix(master, 2, 2, settings.pMatrixCoefficients);
+ m_currentVoice->SetFrequencyRatio(settings.DopplerFactor);
+ XAUDIO2_FILTER_PARAMETERS lpf = { LowPassFilter, 2.0f * std::sinf(X3DAUDIO_PI / 6.0f * settings.LPFDirectCoefficient), 1.0f };
+ m_currentVoice->SetFilterParameters(&lpf);
+ }
+
m_currentVoice->SubmitSourceBuffer(&xBuffer);
m_currentVoice->Start();
}
diff --git a/NothinFancy/src/NFObject/Text.cpp b/NothinFancy/src/NFObject/Text.cpp
index 2cd7bd0..bc34cff 100644
--- a/NothinFancy/src/NFObject/Text.cpp
+++ b/NothinFancy/src/NFObject/Text.cpp
@@ -36,7 +36,7 @@ namespace nf {
if (FT_Init_FreeType(&ft))
Error("Could not initialize FreeType!");
FT_Face face;
- if (FT_New_Memory_Face(ft, (const unsigned char*)newFont.data, newFont.size, 0, &face))
+ if (FT_New_Memory_Face(ft, (const unsigned char*)newFont.data, (unsigned int)newFont.size, 0, &face))
Error("Could not load font!");
FT_Set_Pixel_Sizes(face, 0, 160);
for (unsigned char c = 0; c < 128; c++) {
diff --git a/NothinFancy/src/Renderer/GBuffer.cpp b/NothinFancy/src/Renderer/GBuffer.cpp
index 98e6002..c813cf7 100644
--- a/NothinFancy/src/Renderer/GBuffer.cpp
+++ b/NothinFancy/src/Renderer/GBuffer.cpp
@@ -19,7 +19,7 @@ namespace nf {
m_width = Application::getApp()->getConfig().width;
m_height = Application::getApp()->getConfig().height;
- glGenTextures(m_textures.size(), &m_textures[0]);
+ glGenTextures((unsigned int)m_textures.size(), &m_textures[0]);
for (unsigned int i = 0; i < m_textures.size(); i++) {
glBindTexture(GL_TEXTURE_2D, m_textures[i]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, m_width, m_height, 0, GL_RGB, GL_FLOAT, nullptr);
@@ -28,7 +28,7 @@ namespace nf {
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, m_textures[i], 0);
}
unsigned int draw[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3 };
- glDrawBuffers(m_textures.size(), draw);
+ glDrawBuffers((unsigned int)m_textures.size(), draw);
glGenRenderbuffers(1, &m_depth);
glBindRenderbuffer(GL_RENDERBUFFER, m_depth);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, m_width, m_height);
@@ -38,8 +38,6 @@ namespace nf {
}
void GBuffer::render(std::vector& entites, Shader* shader) {
- int prevFBO;
- glGetIntegerv(GL_FRAMEBUFFER_BINDING, &prevFBO);
glBindFramebuffer(GL_FRAMEBUFFER, m_FBO);
resize();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -51,9 +49,9 @@ namespace nf {
for (auto& curr : m_modelsToDraw) {
std::vector& mats = curr.second;
std::string pos;
- unsigned int modelsRemaining = mats.size();
+ size_t modelsRemaining = mats.size();
while (modelsRemaining != 0) {
- unsigned int modelCount;
+ size_t modelCount;
if (modelsRemaining > 60)
modelCount = 60;
else
@@ -63,7 +61,7 @@ namespace nf {
pos = std::to_string(i) + "]";
shader->setUniform(m_modelString + pos, mats[i]);
}
- curr.first->render(shader, false, modelCount);
+ curr.first->render(shader, false, (unsigned int)modelCount);
mats.erase(mats.begin(), mats.begin() + modelCount);
}
}
@@ -72,7 +70,7 @@ namespace nf {
//TODO: Blit depth buffer for transparent objects later
- glBindFramebuffer(GL_FRAMEBUFFER, prevFBO);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
void GBuffer::bindTextures(Shader* shader) {
diff --git a/NothinFancy/src/Renderer/IndexBuffer.cpp b/NothinFancy/src/Renderer/IndexBuffer.cpp
index 9a277df..dbe759d 100644
--- a/NothinFancy/src/Renderer/IndexBuffer.cpp
+++ b/NothinFancy/src/Renderer/IndexBuffer.cpp
@@ -4,7 +4,7 @@
namespace nf {
IndexBuffer::IndexBuffer(const void* data, size_t count) {
- m_count = count;
+ m_count = (unsigned int)count;
glGenBuffers(1, &m_id);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_id);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(unsigned int), data, GL_STATIC_DRAW);
diff --git a/NothinFancy/src/Renderer/Model.cpp b/NothinFancy/src/Renderer/Model.cpp
index 348207c..d260ed4 100644
--- a/NothinFancy/src/Renderer/Model.cpp
+++ b/NothinFancy/src/Renderer/Model.cpp
@@ -18,7 +18,7 @@ namespace nf {
if (model->neededTextures.size() > 32)
Error("Model exceedes 32 texture limit!");
std::string obj = model->data;
- unsigned int startMtlPos = obj.find("newmtl");
+ size_t startMtlPos = obj.find("newmtl");
if (startMtlPos == std::string::npos)
Error("No materials found in model!");
std::string mtl = obj.substr(startMtlPos);
@@ -81,7 +81,7 @@ namespace nf {
sscanf_s(mtl.c_str(), "\nNs %f\n", &s);
mats[currMat]->shininess = s;
}
- unsigned int pos = mtl.find(line) + strlen(line);
+ size_t pos = mtl.find(line) + strlen(line);
mtl = mtl.substr(pos);
}
@@ -142,7 +142,7 @@ namespace nf {
mats[usingMat]->vnIndices.push_back(vnIndex[2]);
}
- unsigned int pos = file.find(line) + strlen(line) + remove;
+ size_t pos = file.find(line) + strlen(line) + remove;
file = file.substr(pos);
}
@@ -250,9 +250,9 @@ namespace nf {
mats[curr]->outTan.push_back(mats[curr]->unindexedTan[(i * 3)]);
mats[curr]->outTan.push_back(mats[curr]->unindexedTan[(i * 3 + 1)]);
mats[curr]->outTan.push_back(mats[curr]->unindexedTan[(i * 3 + 2)]);
- unsigned int index = (mats[curr]->outVB.size() / 3) - 1;
- mats[curr]->outIB.push_back(index);
- vertexMap[currVertex] = index;
+ size_t index = (mats[curr]->outVB.size() / 3) - 1;
+ mats[curr]->outIB.push_back((unsigned int)index);
+ vertexMap[currVertex] = (unsigned int)index;
mats[curr]->ibCount++;
}
}
@@ -277,14 +277,14 @@ namespace nf {
norm = new Texture(normA, true);
}
m_materials.push_back(std::make_tuple(diff, spec, norm, (float)curr2.diffuseColor.x, (float)curr2.diffuseColor.y, (float)curr2.diffuseColor.z, curr2.shininess));
- unsigned int offset = vboPositions.size() / 3;
+ size_t offset = vboPositions.size() / 3;
vboPositions.insert(vboPositions.end(), curr2.outVB.begin(), curr2.outVB.end());
vboTexCoords.insert(vboTexCoords.end(), curr2.outTC.begin(), curr2.outTC.end());
vboNormals.insert(vboNormals.end(), curr2.outVN.begin(), curr2.outVN.end());
vboTangents.insert(vboTangents.end(), curr2.outTan.begin(), curr2.outTan.end());
vboMaterialIndices.insert(vboMaterialIndices.end(), curr2.outVB.size() / 3, matCount);
if (offset)
- std::for_each(curr2.outIB.begin(), curr2.outIB.end(), [offset](unsigned int& out) { out += offset; });
+ std::for_each(curr2.outIB.begin(), curr2.outIB.end(), [offset](unsigned int& out) { out += (unsigned int)offset; });
vboIndices.insert(vboIndices.end(), curr2.outIB.begin(), curr2.outIB.end());
delete m.second;
matCount++;
@@ -315,6 +315,9 @@ namespace nf {
m_ib->bind();
if (!onlyDepth)
bindMaterials(shader);
+#ifdef _DEBUG
+ shader->validate();
+#endif
glDrawElementsInstanced(GL_TRIANGLES, m_ib->getCount(), GL_UNSIGNED_INT, nullptr, count);
}
diff --git a/NothinFancy/src/Renderer/Renderer.cpp b/NothinFancy/src/Renderer/Renderer.cpp
index bb1885f..d3a4ee2 100644
--- a/NothinFancy/src/Renderer/Renderer.cpp
+++ b/NothinFancy/src/Renderer/Renderer.cpp
@@ -24,6 +24,7 @@ namespace nf {
m_shadowMapFBO(0),
m_directionalDepthTexSize(0),
m_pointDepthTexSize(0),
+ m_directionalShadowMap(0),
m_cubemap(nullptr),
m_fadeIn(false),
m_fadeOut(false),
@@ -86,7 +87,7 @@ namespace nf {
if (!m_app->isCustomWindowIcon()) {
ATexture& windowTex = *(ATexture*)m_baseAP["defaultwindowicon.png"];
int width, height, nChannels;
- unsigned char* tex = stbi_load_from_memory((const unsigned char*)windowTex.data, windowTex.size, &width, &height, &nChannels, 0);
+ unsigned char* tex = stbi_load_from_memory((const unsigned char*)windowTex.data, (unsigned int)windowTex.size, &width, &height, &nChannels, 0);
std::vector pixels(width * height * 4);
for (unsigned int i = 0; i < pixels.size() / 4; i++) {
pixels[i * 4 + 0] = tex[i * 4 + 2];
@@ -163,7 +164,7 @@ namespace nf {
m_gBuffer->render(m_lGame, m_gBufferShader);
//Light entities using the gBuffer
- unsigned int lightsRemaining = m_lights.size();
+ size_t lightsRemaining = m_lights.size();
if (!lightsRemaining) {
m_quadVAO->bind();
m_quadIB->bind();
@@ -173,7 +174,7 @@ namespace nf {
}
unsigned int drawCount = 0;
while (lightsRemaining > 0) {
- unsigned int currLightsDrawn;
+ size_t currLightsDrawn;
if (lightsRemaining > m_texSlots)
currLightsDrawn = m_texSlots;
else
@@ -285,18 +286,21 @@ namespace nf {
SwapBuffers(m_hdc);
}
- void Renderer::renderShadowMaps(unsigned int count) {
+ void Renderer::renderShadowMaps(size_t count) {
float nearP = 0.1f, farP = 400.0f;
glm::mat4 directionalLightProj = glm::ortho(-50.0f, 50.0f, -50.0f, 50.0f, nearP, farP);
glm::mat4 pointLightProj = glm::perspective(glm::radians(90.0f), 1.0f, nearP, farP);
glm::mat4 lightView;
glm::mat4 lightSpaceMat;
+ bool directionalRendered = false;
+ unsigned int directionalSlot = 0; //TODO: Test this
glBindFramebuffer(GL_FRAMEBUFFER, m_shadowMapFBO);
for (unsigned int i = 0; i < count; i++) {
Light::Type type = m_lights[i]->getType();
- unsigned int tex = type == Light::Type::DIRECTIONAL ? m_directionalShadowMaps[i] : m_pointShadowMaps[i];
+ unsigned int tex = type == Light::Type::DIRECTIONAL ? m_directionalShadowMap : m_pointShadowMaps[i];
switch (type) {
case Light::Type::DIRECTIONAL: {
+ std::string stringPos;
glViewport(0, 0, m_directionalDepthTexSize, m_directionalDepthTexSize);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, tex, 0);
glDrawBuffer(GL_NONE);
@@ -307,7 +311,7 @@ namespace nf {
lightView = glm::lookAt(lightPos, glm::vec3(0.0), glm::vec3(0.0, 1.0, 0.0));
lightSpaceMat = directionalLightProj * lightView;
m_directionalShadowShader->setUniform("lightSpace", lightSpaceMat);
- std::string stringPos = "lightSpaceMat[";
+ stringPos = "lightSpaceMat[";
stringPos += std::to_string(i);
stringPos += "]";
m_lightingShader->setUniform(stringPos, lightSpaceMat);
@@ -320,6 +324,7 @@ namespace nf {
glActiveTexture(GL_TEXTURE4 + i);
glBindTexture(GL_TEXTURE_2D, tex);
m_lightingShader->setUniform(stringPos, 4 + (int)i);
+ directionalRendered = true;
break;
}
case Light::Type::POINT: {
@@ -406,18 +411,8 @@ namespace nf {
m_texSlots = 12;
glGenFramebuffers(1, &m_shadowMapFBO);
for (unsigned int i = 0; i < m_texSlots; i++) {
- unsigned int directionalDepthMap, pointDepthMap;
- glGenTextures(1, &directionalDepthMap);
+ unsigned int pointDepthMap;
glGenTextures(1, &pointDepthMap);
- glBindTexture(GL_TEXTURE_2D, directionalDepthMap);
- glTexStorage2D(GL_TEXTURE_2D, 1, GL_DEPTH_COMPONENT24, m_directionalDepthTexSize, m_directionalDepthTexSize);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
- float borderColor[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
- glBindTexture(GL_TEXTURE_2D, 0);
glBindTexture(GL_TEXTURE_CUBE_MAP, pointDepthMap);
glTexStorage2D(GL_TEXTURE_CUBE_MAP, 1, GL_DEPTH_COMPONENT24, m_pointDepthTexSize, m_pointDepthTexSize);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -426,10 +421,18 @@ namespace nf {
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
- m_directionalShadowMaps.push_back(directionalDepthMap);
m_pointShadowMaps.push_back(pointDepthMap);
}
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glGenTextures(1, &m_directionalShadowMap);
+ glBindTexture(GL_TEXTURE_2D, m_directionalShadowMap);
+ glTexStorage2D(GL_TEXTURE_2D, 1, GL_DEPTH_COMPONENT24, m_directionalDepthTexSize, m_directionalDepthTexSize);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+ float borderColor[] = { 1.0f, 1.0f, 1.0f, 1.0f };
+ glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
+ glBindTexture(GL_TEXTURE_2D, 0);
}
Renderer::~Renderer() {
diff --git a/NothinFancy/src/Renderer/Shader.cpp b/NothinFancy/src/Renderer/Shader.cpp
index 9c2e7b1..8512c59 100644
--- a/NothinFancy/src/Renderer/Shader.cpp
+++ b/NothinFancy/src/Renderer/Shader.cpp
@@ -53,15 +53,6 @@ namespace nf {
glGetProgramInfoLog(m_id, length, &length, message);
Error("OpenGL Error: " + (std::string)message);
}
- glValidateProgram(m_id);
- glGetProgramiv(m_id, GL_VALIDATE_STATUS, &result);
- if (result != GL_TRUE) {
- int length;
- glGetProgramiv(m_id, GL_INFO_LOG_LENGTH, &length);
- char* message = new char[length];
- glGetProgramInfoLog(m_id, length, &length, message);
- Error("OpenGL Error: " + (std::string)message);
- }
glDetachShader(m_id, vs);
glDetachShader(m_id, fs);
glDeleteShader(vs);
@@ -72,6 +63,19 @@ namespace nf {
}
}
+ void Shader::validate() {
+ glValidateProgram(m_id);
+ int result;
+ glGetProgramiv(m_id, GL_VALIDATE_STATUS, &result);
+ if (result != GL_TRUE) {
+ int length;
+ glGetProgramiv(m_id, GL_INFO_LOG_LENGTH, &length);
+ char* message = new char[length];
+ glGetProgramInfoLog(m_id, length, &length, message);
+ Error("OpenGL Error: " + (std::string)message);
+ }
+ }
+
void Shader::bind() {
glUseProgram(m_id);
}
diff --git a/NothinFancy/src/Renderer/Texture.cpp b/NothinFancy/src/Renderer/Texture.cpp
index 7a728ae..930e87f 100644
--- a/NothinFancy/src/Renderer/Texture.cpp
+++ b/NothinFancy/src/Renderer/Texture.cpp
@@ -16,7 +16,7 @@ namespace nf {
{
int nChannels;
stbi_set_flip_vertically_on_load(true);
- unsigned char* texture = stbi_load_from_memory((unsigned char*)tex->data, tex->size, &m_x, &m_y, &nChannels, 0);
+ unsigned char* texture = stbi_load_from_memory((unsigned char*)tex->data, (unsigned int)tex->size, &m_x, &m_y, &nChannels, 0);
if (!texture)
Error("Texture failed to load from memory!");
glGenTextures(1, &m_id);
diff --git a/NothinFancy/src/Renderer/VertexArray.cpp b/NothinFancy/src/Renderer/VertexArray.cpp
index d3081d3..a3fc77a 100644
--- a/NothinFancy/src/Renderer/VertexArray.cpp
+++ b/NothinFancy/src/Renderer/VertexArray.cpp
@@ -37,7 +37,7 @@ namespace nf {
}
void VertexArray::finishBufferLayout() {
- unsigned int offset = 0;
+ size_t offset = 0;
for (; m_attribute < m_lastBufferLayout.size(); m_attribute++) {
const VertexBufferElement& curr = m_lastBufferLayout[m_attribute];
glEnableVertexAttribArray(m_attribute);
diff --git a/NothinFancy/src/Utility.cpp b/NothinFancy/src/Utility.cpp
index 78b1977..932a904 100644
--- a/NothinFancy/src/Utility.cpp
+++ b/NothinFancy/src/Utility.cpp
@@ -53,14 +53,14 @@ namespace nf {
#endif
const wchar_t* toWide(const char* in) {
- int length = std::strlen(in) + 1;
+ unsigned int length = (unsigned int)std::strlen(in) + 1;
wchar_t* out = new wchar_t[length];
MultiByteToWideChar(CP_ACP, NULL, in, -1, out, length);
return out;
}
const wchar_t* toWide(const std::string& in) {
const char* cstr = in.c_str();
- int length = std::strlen(cstr) + 1;
+ unsigned int length = (unsigned int)std::strlen(cstr) + 1;
wchar_t* out = new wchar_t[length];
MultiByteToWideChar(CP_ACP, NULL, cstr, -1, out, length);
return out;
@@ -68,7 +68,7 @@ namespace nf {
void writeFile(const std::string& filename, const std::string& in, bool encrypted) {
if (filename.find('/') != std::string::npos || filename.find('\\') != std::string::npos) {
- int pos = filename.find_last_of("/\\");
+ size_t pos = filename.find_last_of("/\\");
std::string temp = filename.substr(0, pos);
std::wstring folders(temp.begin(), temp.end());
WCHAR exe[MAX_PATH];
diff --git a/NothinFancy/src/include/Assets.h b/NothinFancy/src/include/Assets.h
index b2fe885..6dce338 100644
--- a/NothinFancy/src/include/Assets.h
+++ b/NothinFancy/src/include/Assets.h
@@ -31,17 +31,17 @@ namespace nf {
struct ACubemap : Asset {
char* frontData = nullptr;
- size_t frontSize = 0;
+ unsigned int frontSize = 0;
char* backData = nullptr;
- size_t backSize = 0;
+ unsigned int backSize = 0;
char* topData = nullptr;
- size_t topSize = 0;
+ unsigned int topSize = 0;
char* bottomData = nullptr;
- size_t bottomSize = 0;
+ unsigned int bottomSize = 0;
char* leftData = nullptr;
- size_t leftSize = 0;
+ unsigned int leftSize = 0;
char* rightData = nullptr;
- size_t rightSize = 0;
+ unsigned int rightSize = 0;
unsigned int numImages = 0;
diff --git a/NothinFancy/src/include/AudioEngine.h b/NothinFancy/src/include/AudioEngine.h
index 5cf50bd..6eada2e 100644
--- a/NothinFancy/src/include/AudioEngine.h
+++ b/NothinFancy/src/include/AudioEngine.h
@@ -1,6 +1,7 @@
#pragma once
#include
#include
+#include
namespace nf {
class Application;
@@ -11,12 +12,15 @@ namespace nf {
void updateSources();
IXAudio2SourceVoice* getNewSourceVoice(WAVEFORMATEXTENSIBLE* fmt);
+ IXAudio2MasteringVoice* getMasterVoice();
+ X3DAUDIO_HANDLE* getX3DAudioInstance();
void cleanup();
~AudioEngine();
private:
Application* m_app;
IXAudio2* m_engine;
+ X3DAUDIO_HANDLE m_x3d;
IXAudio2MasteringVoice* m_masterVoice;
std::vector m_voices;
};
diff --git a/NothinFancy/src/include/Entity.h b/NothinFancy/src/include/Entity.h
index 81a62cd..2f5709b 100644
--- a/NothinFancy/src/include/Entity.h
+++ b/NothinFancy/src/include/Entity.h
@@ -25,6 +25,7 @@ namespace nf {
void setScale(double x, double y, double z);
void setScale(const Vec3& scale);
+ const Vec3& getPosition();
void render(Shader* shader, bool onlyDepth);
Model* getModel() const;
#ifdef NFENGINE
diff --git a/NothinFancy/src/include/Renderer.h b/NothinFancy/src/include/Renderer.h
index f106079..21c297c 100644
--- a/NothinFancy/src/include/Renderer.h
+++ b/NothinFancy/src/include/Renderer.h
@@ -33,7 +33,7 @@ namespace nf {
~Renderer();
private:
- void renderShadowMaps(unsigned int count);
+ void renderShadowMaps(size_t count);
void loadBaseAssets();
void createShadowMaps();
@@ -50,7 +50,7 @@ namespace nf {
unsigned int m_shadowMapFBO;
int m_directionalDepthTexSize;
int m_pointDepthTexSize;
- std::vector m_directionalShadowMaps;
+ unsigned int m_directionalShadowMap;
std::vector m_pointShadowMaps;
unsigned int m_texSlots;
diff --git a/NothinFancy/src/include/Shader.h b/NothinFancy/src/include/Shader.h
index b1d9de2..83c4974 100644
--- a/NothinFancy/src/include/Shader.h
+++ b/NothinFancy/src/include/Shader.h
@@ -8,6 +8,7 @@ namespace nf {
public:
Shader(const char* vertexSource, const char* fragmentSource, const char* geometrySource = nullptr);
+ void validate();
void bind();
void setUniform(const std::string& name, glm::mat4& data);
void setUniform(const std::string& name, glm::vec3& data);
diff --git a/NothinFancy/src/include/Sound.h b/NothinFancy/src/include/Sound.h
index 41bb649..2463f68 100644
--- a/NothinFancy/src/include/Sound.h
+++ b/NothinFancy/src/include/Sound.h
@@ -1,10 +1,13 @@
#pragma once
#include
+#include
#include "NFObject.h"
+#include "Utility.h"
namespace nf {
struct Asset;
+ class Entity;
class Sound : public NFObject {
public:
@@ -12,6 +15,8 @@ namespace nf {
void create(Asset* soundAsset);
void setVolume(double volume);
+ void setEntity(Entity& entity);
+ void setPosition(const Vec3& position);
void play(bool loop = false);
void stop();
@@ -21,8 +26,13 @@ namespace nf {
bool m_constructed;
unsigned int m_dataSize;
float m_volume;
+ bool m_usePos;
WAVEFORMATEXTENSIBLE m_format;
unsigned char* m_buffer;
IXAudio2SourceVoice* m_currentVoice;
+ Entity* m_targetEntity;
+ Vec3 m_soundPos;
+ X3DAUDIO_EMITTER m_emitter;
+ X3DAUDIO_LISTENER m_listener;
};
}
\ No newline at end of file
diff --git a/STEMSln.sln b/STEMSln.sln
index 035a62f..8d5b116 100644
--- a/STEMSln.sln
+++ b/STEMSln.sln
@@ -15,29 +15,21 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
Release|x64 = Release|x64
- Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Debug|x64.ActiveCfg = Debug|x64
- {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Debug|x86.ActiveCfg = Debug|Win32
- {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Debug|x86.Build.0 = Debug|Win32
+ {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Debug|x64.Build.0 = Debug|x64
{1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Release|x64.ActiveCfg = Release|x64
- {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Release|x86.ActiveCfg = Release|Win32
- {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Release|x86.Build.0 = Release|Win32
+ {1B9C5361-E301-41BF-97E7-56D65F11E2BB}.Release|x64.Build.0 = Release|x64
{B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Debug|x64.ActiveCfg = Debug|x64
- {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Debug|x86.ActiveCfg = Debug|Win32
- {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Debug|x86.Build.0 = Debug|Win32
+ {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Debug|x64.Build.0 = Debug|x64
{B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Release|x64.ActiveCfg = Release|x64
- {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Release|x86.ActiveCfg = Release|Win32
- {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Release|x86.Build.0 = Release|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Debug|x64.ActiveCfg = Debug|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Debug|x86.ActiveCfg = Debug|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Debug|x86.Build.0 = Debug|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Release|x64.ActiveCfg = Release|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Release|x86.ActiveCfg = Release|Win32
- {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Release|x86.Build.0 = Release|Win32
+ {B7FEC2D6-1D8F-487E-89CB-FD611FD1AEB6}.Release|x64.Build.0 = Release|x64
+ {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Debug|x64.ActiveCfg = Debug|x64
+ {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Debug|x64.Build.0 = Debug|x64
+ {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Release|x64.ActiveCfg = Release|x64
+ {771B4AEE-E2C6-4745-AC40-1EF57149612E}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE