From 215358f19dda432e037da8ef10a74702a2f08468 Mon Sep 17 00:00:00 2001 From: "mr.exodia" Date: Wed, 19 Feb 2014 18:00:04 +0100 Subject: [PATCH] more refactoring --- TitanEngine/Global.Engine.Extension.cpp | 304 ++++++++++++++++++++++++ TitanEngine/Global.Engine.Extension.h | 9 + TitanEngine/Global.Engine.cpp | 71 ------ TitanEngine/Global.Engine.h | 6 - TitanEngine/TitanEngine.cpp | 230 +----------------- TitanEngine/TitanEngine.vcxproj | 2 + TitanEngine/TitanEngine.vcxproj.filters | 6 + 7 files changed, 327 insertions(+), 301 deletions(-) create mode 100644 TitanEngine/Global.Engine.Extension.cpp create mode 100644 TitanEngine/Global.Engine.Extension.h diff --git a/TitanEngine/Global.Engine.Extension.cpp b/TitanEngine/Global.Engine.Extension.cpp new file mode 100644 index 0000000..e173f5f --- /dev/null +++ b/TitanEngine/Global.Engine.Extension.cpp @@ -0,0 +1,304 @@ +#include "stdafx.h" +#include "definitions.h" +#include "Global.Engine.Extension.h" +#include + +static std::vector Plugin; + +// Global.Engine.Extension.Functions: +void ExtensionManagerPluginReleaseCallBack() +{ + typedef void(TITCALL *fPluginReleaseExec)(); + fPluginReleaseExec myPluginReleaseExec; + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + __try + { + if(Plugin.at(i).TitanReleasePlugin != NULL) + { + myPluginReleaseExec = (fPluginReleaseExec)Plugin[i].TitanReleasePlugin; + myPluginReleaseExec(); + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + + } + } +} + +void ExtensionManagerPluginResetCallBack() +{ + + typedef void(TITCALL *fPluginResetExec)(); + fPluginResetExec myPluginResetExec; + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + __try + { + if(Plugin.at(i).TitanResetPlugin != NULL) + { + myPluginResetExec = (fPluginResetExec)Plugin[i].TitanResetPlugin; + myPluginResetExec(); + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + + } + } +} + +void ExtensionManagerPluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason) +{ + typedef void(TITCALL *fPluginDebugExec)(LPDEBUG_EVENT debugEvent, int CallReason); + fPluginDebugExec myPluginDebugExec; + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + __try + { + if(!Plugin.at(i).PluginDisabled) + { + if(Plugin.at(i).TitanDebuggingCallBack != NULL) + { + myPluginDebugExec = (fPluginDebugExec)Plugin[i].TitanDebuggingCallBack; + myPluginDebugExec(debugEvent, CallReason); + } + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + + } + } +} + +void EngineInitPlugins(wchar_t* szEngineFolder) +{ + + bool MoreFiles = true; + bool NameHasBeenRegistered = false; + PluginInformation myPluginInfo = {}; +#if defined (_WIN64) + wchar_t* szPluginFolder = L"plugins\\x64\\"; +#else + wchar_t* szPluginFolder = L"plugins\\x86\\"; +#endif + typedef bool(TITCALL *fPluginRegister)(char* szPluginName, LPDWORD titanPluginMajorVersion, LPDWORD titanPluginMinorVersion); + wchar_t szPluginSearchString[MAX_PATH] = {}; + wchar_t szPluginFullPath[MAX_PATH] = {}; + fPluginRegister myPluginRegister; + WIN32_FIND_DATAW FindData; + HANDLE CurrentFile; + + lstrcpyW(szPluginSearchString, szEngineFolder); + lstrcatW(szPluginSearchString, szPluginFolder); + lstrcatW(szPluginSearchString, L"*.dll"); + CurrentFile = FindFirstFileW(szPluginSearchString, &FindData); + while(MoreFiles) + { + lstrcpyW(szPluginFullPath, szEngineFolder); + lstrcatW(szPluginFullPath, szPluginFolder); + lstrcatW(szPluginFullPath, FindData.cFileName); + RtlZeroMemory(&myPluginInfo, sizeof PluginInformation); + myPluginInfo.PluginBaseAddress = LoadLibraryW(szPluginFullPath); + if(myPluginInfo.PluginBaseAddress != NULL) + { + myPluginInfo.TitanResetPlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanResetPlugin"); + myPluginInfo.TitanReleasePlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanReleasePlugin"); + myPluginInfo.TitanRegisterPlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanRegisterPlugin"); + myPluginInfo.TitanDebuggingCallBack = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanDebuggingCallBack"); + myPluginRegister = (fPluginRegister)myPluginInfo.TitanRegisterPlugin; + if(myPluginRegister != NULL) + { + __try + { + if(myPluginRegister((char*)&myPluginInfo.PluginName[0], &myPluginInfo.PluginMajorVersion, &myPluginInfo.PluginMinorVersion)) + { + if(lstrlenA(myPluginInfo.PluginName) <= 64) + { + NameHasBeenRegistered = false; + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, myPluginInfo.PluginName) == NULL) + { + NameHasBeenRegistered = true; + } + } + if(!NameHasBeenRegistered) + { + Plugin.push_back(myPluginInfo); + } + else + { + FreeLibrary(myPluginInfo.PluginBaseAddress); + } + } + else + { + FreeLibrary(myPluginInfo.PluginBaseAddress); + } + } + else + { + FreeLibrary(myPluginInfo.PluginBaseAddress); + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + FreeLibrary(myPluginInfo.PluginBaseAddress); + } + } + } + if(!FindNextFileW(CurrentFile, &FindData)) + { + MoreFiles = false; + } + } + FindClose(CurrentFile); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName) +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + return(true); + } + } + return(false); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName) +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + if(!Plugin[i].PluginDisabled) + { + return(true); + } + else + { + return(false); + } + } + } + return(false); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerDisableAllPlugins() +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + Plugin[i].PluginDisabled = true; + } + return(true); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerDisablePlugin(char* szPluginName) +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + Plugin[i].PluginDisabled = true; + return(true); + } + } + return(false); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerEnableAllPlugins() +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + Plugin[i].PluginDisabled = false; + } + return(true); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerEnablePlugin(char* szPluginName) +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + Plugin[i].PluginDisabled = false; + return(true); + } + } + return(false); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerUnloadAllPlugins() +{ + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(FreeLibrary(Plugin[i].PluginBaseAddress)) + { + Plugin.erase(Plugin.begin() + i); + } + } + return(true); +} + +__declspec(dllexport) bool TITCALL ExtensionManagerUnloadPlugin(char* szPluginName) +{ + + typedef void(TITCALL *fPluginReleaseExec)(); + fPluginReleaseExec myPluginReleaseExec; + + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + __try + { + if(Plugin[i].TitanReleasePlugin != NULL) + { + myPluginReleaseExec = (fPluginReleaseExec)Plugin[i].TitanReleasePlugin; + myPluginReleaseExec(); + if(FreeLibrary(Plugin[i].PluginBaseAddress)) + { + Plugin.erase(Plugin.begin() + i); + return(true); + } + } + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + if(FreeLibrary(Plugin[i].PluginBaseAddress)) + { + Plugin.erase(Plugin.begin() + i); + return(true); + } + } + } + } + return(false); +} + +__declspec(dllexport) void* TITCALL ExtensionManagerGetPluginInfo(char* szPluginName) +{ + for(unsigned int i = 0; i < Plugin.size(); i++) + { + if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) + { + return(&Plugin[i]); + } + } + return(NULL); +} \ No newline at end of file diff --git a/TitanEngine/Global.Engine.Extension.h b/TitanEngine/Global.Engine.Extension.h new file mode 100644 index 0000000..ae44353 --- /dev/null +++ b/TitanEngine/Global.Engine.Extension.h @@ -0,0 +1,9 @@ +#ifndef _GLOBAL_ENGINE_EXTENSION_H +#define _GLOBAL_ENGINE_EXTENSION_H + +void ExtensionManagerPluginReleaseCallBack(); +void ExtensionManagerPluginResetCallBack(); +void ExtensionManagerPluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason); +void EngineInitPlugins(wchar_t* szEngineFolder); + +#endif //_GLOBAL_ENGINE_EXTENSION_H \ No newline at end of file diff --git a/TitanEngine/Global.Engine.cpp b/TitanEngine/Global.Engine.cpp index 18221cc..3ba2569 100644 --- a/TitanEngine/Global.Engine.cpp +++ b/TitanEngine/Global.Engine.cpp @@ -12,83 +12,12 @@ char engineFoundDLLName[512]; char engineFoundAPIName[512]; char engineExtractedFileName[512]; wchar_t engineExtractedFileNameW[512]; -std::vector Plugin; HMODULE engineHandle; bool engineCheckForwarders = true; bool engineAlowModuleLoading = false; bool engineCreatePathForFiles = true; // hardcoded // Global.Engine.functions: -void EngineExecutePluginReleaseCallBack() -{ - typedef void(TITCALL *fPluginReleaseExec)(); - fPluginReleaseExec myPluginReleaseExec; - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - __try - { - if(Plugin.at(i).TitanReleasePlugin != NULL) - { - myPluginReleaseExec = (fPluginReleaseExec)Plugin[i].TitanReleasePlugin; - myPluginReleaseExec(); - } - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - - } - } -} - -void EngineExecutePluginResetCallBack() -{ - - typedef void(TITCALL *fPluginResetExec)(); - fPluginResetExec myPluginResetExec; - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - __try - { - if(Plugin.at(i).TitanResetPlugin != NULL) - { - myPluginResetExec = (fPluginResetExec)Plugin[i].TitanResetPlugin; - myPluginResetExec(); - } - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - - } - } -} - -void EngineExecutePluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason) -{ - typedef void(TITCALL *fPluginDebugExec)(LPDEBUG_EVENT debugEvent, int CallReason); - fPluginDebugExec myPluginDebugExec; - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - __try - { - if(!Plugin.at(i).PluginDisabled) - { - if(Plugin.at(i).TitanDebuggingCallBack != NULL) - { - myPluginDebugExec = (fPluginDebugExec)Plugin[i].TitanDebuggingCallBack; - myPluginDebugExec(debugEvent, CallReason); - } - } - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - - } - } -} - bool EngineIsThereFreeHardwareBreakSlot(LPDWORD FreeRegister) { diff --git a/TitanEngine/Global.Engine.h b/TitanEngine/Global.Engine.h index ca6d8de..ac291be 100644 --- a/TitanEngine/Global.Engine.h +++ b/TitanEngine/Global.Engine.h @@ -11,13 +11,7 @@ extern HMODULE engineHandle; extern bool engineAlowModuleLoading; extern bool engineCheckForwarders; -extern std::vector Plugin; - - //Global.Engine.Functions -void EngineExecutePluginReleaseCallBack(); -void EngineExecutePluginResetCallBack(); -void EngineExecutePluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason); bool EngineIsThereFreeHardwareBreakSlot(LPDWORD FreeRegister); bool EngineFileExists(char* szFileName); char* EngineExtractPath(char* szFileName); diff --git a/TitanEngine/TitanEngine.cpp b/TitanEngine/TitanEngine.cpp index b7fbed5..cad39fe 100644 --- a/TitanEngine/TitanEngine.cpp +++ b/TitanEngine/TitanEngine.cpp @@ -27,6 +27,7 @@ #include "Global.Engine.h" #include "Global.Handle.h" #include "Global.Mapping.h" +#include "Global.Engine.Extension.h" #define TE_VER_MAJOR 2 #define TE_VER_MIDDLE 1 @@ -170,7 +171,6 @@ void* CwpBuffPatchedEntry; void* buffPatchedEntry; std::vector hookEntry; - // Global.Engine.Hash: unsigned long Crc32Table[256]; @@ -14037,11 +14037,11 @@ __declspec(dllexport) void TITCALL DebugLoop() RtlZeroMemory(&DBGEvent, sizeof DEBUG_EVENT); RtlZeroMemory(&TerminateDBGEvent, sizeof DEBUG_EVENT); RtlZeroMemory(&DLLDebugFileName, 512); - EngineExecutePluginResetCallBack(); + ExtensionManagerPluginResetCallBack(); engineFileIsBeingDebugged = true; if(engineExecutePluginCallBack) { - EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_PREDEBUG); + ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_PREDEBUG); } while(!BreakDBG) //actual debug loop @@ -14049,7 +14049,7 @@ __declspec(dllexport) void TITCALL DebugLoop() WaitForDebugEvent(&DBGEvent, engineWaitForDebugEventTimeOut); if(engineExecutePluginCallBack) { - EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION); + ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION); } if(engineFindOEPCallBack != NULL) { @@ -15727,7 +15727,7 @@ __declspec(dllexport) void TITCALL DebugLoop() engineFileIsBeingDebugged = false; if(engineExecutePluginCallBack) { - EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_POSTDEBUG); + ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_POSTDEBUG); } } __declspec(dllexport) void TITCALL SetDebugLoopTimeOut(DWORD TimeOut) @@ -24805,141 +24805,6 @@ __declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLog cSelect--; SendMessageA(EngineBoxHandle, LB_SETCURSEL, (WPARAM)cSelect, NULL); } -// Global.Engine.Extension.Functions: -__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginLoaded(char* szPluginName) -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - return(true); - } - } - return(false); -} -__declspec(dllexport) bool TITCALL ExtensionManagerIsPluginEnabled(char* szPluginName) -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - if(!Plugin[i].PluginDisabled) - { - return(true); - } - else - { - return(false); - } - } - } - return(false); -} -__declspec(dllexport) bool TITCALL ExtensionManagerDisableAllPlugins() -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - Plugin[i].PluginDisabled = true; - } - return(true); -} -__declspec(dllexport) bool TITCALL ExtensionManagerDisablePlugin(char* szPluginName) -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - Plugin[i].PluginDisabled = true; - return(true); - } - } - return(false); -} -__declspec(dllexport) bool TITCALL ExtensionManagerEnableAllPlugins() -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - Plugin[i].PluginDisabled = false; - } - return(true); -} -__declspec(dllexport) bool TITCALL ExtensionManagerEnablePlugin(char* szPluginName) -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - Plugin[i].PluginDisabled = false; - return(true); - } - } - return(false); -} -__declspec(dllexport) bool TITCALL ExtensionManagerUnloadAllPlugins() -{ - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(FreeLibrary(Plugin[i].PluginBaseAddress)) - { - Plugin.erase(Plugin.begin() + i); - } - } - return(true); -} -__declspec(dllexport) bool TITCALL ExtensionManagerUnloadPlugin(char* szPluginName) -{ - - typedef void(TITCALL *fPluginReleaseExec)(); - fPluginReleaseExec myPluginReleaseExec; - - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - __try - { - if(Plugin[i].TitanReleasePlugin != NULL) - { - myPluginReleaseExec = (fPluginReleaseExec)Plugin[i].TitanReleasePlugin; - myPluginReleaseExec(); - if(FreeLibrary(Plugin[i].PluginBaseAddress)) - { - Plugin.erase(Plugin.begin() + i); - return(true); - } - } - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - if(FreeLibrary(Plugin[i].PluginBaseAddress)) - { - Plugin.erase(Plugin.begin() + i); - return(true); - } - } - } - } - return(false); -} - -__declspec(dllexport) void* TITCALL ExtensionManagerGetPluginInfo(char* szPluginName) -{ - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, szPluginName) == NULL) - { - return(&Plugin[i]); - } - } - return(NULL); -} // Global.Garbage.functions: bool CreateGarbageItem(void* outGargabeItem, int MaxGargabeStringSize) @@ -25084,90 +24949,7 @@ void EmptyGarbage() RemoveGarbageItem(engineSzEngineGarbageFolder, false); } // Global.Engine.Functions: -void EngineInitPlugins(wchar_t* szEngineFolder) -{ - bool MoreFiles = true; - bool NameHasBeenRegistered = false; - PluginInformation myPluginInfo = {}; -#if defined (_WIN64) - wchar_t* szPluginFolder = L"plugins\\x64\\"; -#else - wchar_t* szPluginFolder = L"plugins\\x86\\"; -#endif - typedef bool(TITCALL *fPluginRegister)(char* szPluginName, LPDWORD titanPluginMajorVersion, LPDWORD titanPluginMinorVersion); - wchar_t szPluginSearchString[MAX_PATH] = {}; - wchar_t szPluginFullPath[MAX_PATH] = {}; - fPluginRegister myPluginRegister; - WIN32_FIND_DATAW FindData; - HANDLE CurrentFile; - - lstrcpyW(szPluginSearchString, szEngineFolder); - lstrcatW(szPluginSearchString, szPluginFolder); - lstrcatW(szPluginSearchString, L"*.dll"); - CurrentFile = FindFirstFileW(szPluginSearchString, &FindData); - while(MoreFiles) - { - lstrcpyW(szPluginFullPath, szEngineFolder); - lstrcatW(szPluginFullPath, szPluginFolder); - lstrcatW(szPluginFullPath, FindData.cFileName); - RtlZeroMemory(&myPluginInfo, sizeof PluginInformation); - myPluginInfo.PluginBaseAddress = LoadLibraryW(szPluginFullPath); - if(myPluginInfo.PluginBaseAddress != NULL) - { - myPluginInfo.TitanResetPlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanResetPlugin"); - myPluginInfo.TitanReleasePlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanReleasePlugin"); - myPluginInfo.TitanRegisterPlugin = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanRegisterPlugin"); - myPluginInfo.TitanDebuggingCallBack = (void*)GetProcAddress(myPluginInfo.PluginBaseAddress, "TitanDebuggingCallBack"); - myPluginRegister = (fPluginRegister)myPluginInfo.TitanRegisterPlugin; - if(myPluginRegister != NULL) - { - __try - { - if(myPluginRegister((char*)&myPluginInfo.PluginName[0], &myPluginInfo.PluginMajorVersion, &myPluginInfo.PluginMinorVersion)) - { - if(lstrlenA(myPluginInfo.PluginName) <= 64) - { - NameHasBeenRegistered = false; - for(unsigned int i = 0; i < Plugin.size(); i++) - { - if(lstrcmpiA(Plugin[i].PluginName, myPluginInfo.PluginName) == NULL) - { - NameHasBeenRegistered = true; - } - } - if(!NameHasBeenRegistered) - { - Plugin.push_back(myPluginInfo); - } - else - { - FreeLibrary(myPluginInfo.PluginBaseAddress); - } - } - else - { - FreeLibrary(myPluginInfo.PluginBaseAddress); - } - } - else - { - FreeLibrary(myPluginInfo.PluginBaseAddress); - } - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - FreeLibrary(myPluginInfo.PluginBaseAddress); - } - } - } - if(!FindNextFileW(CurrentFile, &FindData)) - { - MoreFiles = false; - } - } - FindClose(CurrentFile); -} void EngineInit() { @@ -25229,7 +25011,7 @@ bool APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv case DLL_PROCESS_DETACH: if(lpReserved != NULL) { - EngineExecutePluginReleaseCallBack(); + ExtensionManagerPluginReleaseCallBack(); } break; } diff --git a/TitanEngine/TitanEngine.vcxproj b/TitanEngine/TitanEngine.vcxproj index d44b8f1..8cc3a7b 100644 --- a/TitanEngine/TitanEngine.vcxproj +++ b/TitanEngine/TitanEngine.vcxproj @@ -216,6 +216,7 @@ + @@ -232,6 +233,7 @@ + diff --git a/TitanEngine/TitanEngine.vcxproj.filters b/TitanEngine/TitanEngine.vcxproj.filters index dcdfb5b..bbec432 100644 --- a/TitanEngine/TitanEngine.vcxproj.filters +++ b/TitanEngine/TitanEngine.vcxproj.filters @@ -51,6 +51,9 @@ Source Files\TitanEngine + + Source Files\TitanEngine + @@ -92,6 +95,9 @@ Header Files\TitanEngine + + Header Files\TitanEngine +