more refactoring

This commit is contained in:
mr.exodia 2014-02-19 18:00:04 +01:00
parent a1134258a5
commit 215358f19d
7 changed files with 327 additions and 301 deletions

View File

@ -0,0 +1,304 @@
#include "stdafx.h"
#include "definitions.h"
#include "Global.Engine.Extension.h"
#include <vector>
static std::vector<PluginInformation> 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);
}

View File

@ -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

View File

@ -12,83 +12,12 @@ char engineFoundDLLName[512];
char engineFoundAPIName[512]; char engineFoundAPIName[512];
char engineExtractedFileName[512]; char engineExtractedFileName[512];
wchar_t engineExtractedFileNameW[512]; wchar_t engineExtractedFileNameW[512];
std::vector<PluginInformation> Plugin;
HMODULE engineHandle; HMODULE engineHandle;
bool engineCheckForwarders = true; bool engineCheckForwarders = true;
bool engineAlowModuleLoading = false; bool engineAlowModuleLoading = false;
bool engineCreatePathForFiles = true; // hardcoded bool engineCreatePathForFiles = true; // hardcoded
// Global.Engine.functions: // 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) bool EngineIsThereFreeHardwareBreakSlot(LPDWORD FreeRegister)
{ {

View File

@ -11,13 +11,7 @@ extern HMODULE engineHandle;
extern bool engineAlowModuleLoading; extern bool engineAlowModuleLoading;
extern bool engineCheckForwarders; extern bool engineCheckForwarders;
extern std::vector<PluginInformation> Plugin;
//Global.Engine.Functions //Global.Engine.Functions
void EngineExecutePluginReleaseCallBack();
void EngineExecutePluginResetCallBack();
void EngineExecutePluginDebugCallBack(LPDEBUG_EVENT debugEvent, int CallReason);
bool EngineIsThereFreeHardwareBreakSlot(LPDWORD FreeRegister); bool EngineIsThereFreeHardwareBreakSlot(LPDWORD FreeRegister);
bool EngineFileExists(char* szFileName); bool EngineFileExists(char* szFileName);
char* EngineExtractPath(char* szFileName); char* EngineExtractPath(char* szFileName);

View File

@ -27,6 +27,7 @@
#include "Global.Engine.h" #include "Global.Engine.h"
#include "Global.Handle.h" #include "Global.Handle.h"
#include "Global.Mapping.h" #include "Global.Mapping.h"
#include "Global.Engine.Extension.h"
#define TE_VER_MAJOR 2 #define TE_VER_MAJOR 2
#define TE_VER_MIDDLE 1 #define TE_VER_MIDDLE 1
@ -170,7 +171,6 @@ void* CwpBuffPatchedEntry;
void* buffPatchedEntry; void* buffPatchedEntry;
std::vector<HOOK_ENTRY> hookEntry; std::vector<HOOK_ENTRY> hookEntry;
// Global.Engine.Hash: // Global.Engine.Hash:
unsigned long Crc32Table[256]; unsigned long Crc32Table[256];
@ -14037,11 +14037,11 @@ __declspec(dllexport) void TITCALL DebugLoop()
RtlZeroMemory(&DBGEvent, sizeof DEBUG_EVENT); RtlZeroMemory(&DBGEvent, sizeof DEBUG_EVENT);
RtlZeroMemory(&TerminateDBGEvent, sizeof DEBUG_EVENT); RtlZeroMemory(&TerminateDBGEvent, sizeof DEBUG_EVENT);
RtlZeroMemory(&DLLDebugFileName, 512); RtlZeroMemory(&DLLDebugFileName, 512);
EngineExecutePluginResetCallBack(); ExtensionManagerPluginResetCallBack();
engineFileIsBeingDebugged = true; engineFileIsBeingDebugged = true;
if(engineExecutePluginCallBack) if(engineExecutePluginCallBack)
{ {
EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_PREDEBUG); ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_PREDEBUG);
} }
while(!BreakDBG) //actual debug loop while(!BreakDBG) //actual debug loop
@ -14049,7 +14049,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
WaitForDebugEvent(&DBGEvent, engineWaitForDebugEventTimeOut); WaitForDebugEvent(&DBGEvent, engineWaitForDebugEventTimeOut);
if(engineExecutePluginCallBack) if(engineExecutePluginCallBack)
{ {
EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION); ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_EXCEPTION);
} }
if(engineFindOEPCallBack != NULL) if(engineFindOEPCallBack != NULL)
{ {
@ -15727,7 +15727,7 @@ __declspec(dllexport) void TITCALL DebugLoop()
engineFileIsBeingDebugged = false; engineFileIsBeingDebugged = false;
if(engineExecutePluginCallBack) if(engineExecutePluginCallBack)
{ {
EngineExecutePluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_POSTDEBUG); ExtensionManagerPluginDebugCallBack(&DBGEvent, UE_PLUGIN_CALL_REASON_POSTDEBUG);
} }
} }
__declspec(dllexport) void TITCALL SetDebugLoopTimeOut(DWORD TimeOut) __declspec(dllexport) void TITCALL SetDebugLoopTimeOut(DWORD TimeOut)
@ -24805,141 +24805,6 @@ __declspec(dllexport) void TITCALL EngineAddUnpackerWindowLogMessage(char* szLog
cSelect--; cSelect--;
SendMessageA(EngineBoxHandle, LB_SETCURSEL, (WPARAM)cSelect, NULL); 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: // Global.Garbage.functions:
bool CreateGarbageItem(void* outGargabeItem, int MaxGargabeStringSize) bool CreateGarbageItem(void* outGargabeItem, int MaxGargabeStringSize)
@ -25084,90 +24949,7 @@ void EmptyGarbage()
RemoveGarbageItem(engineSzEngineGarbageFolder, false); RemoveGarbageItem(engineSzEngineGarbageFolder, false);
} }
// Global.Engine.Functions: // 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() void EngineInit()
{ {
@ -25229,7 +25011,7 @@ bool APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
if(lpReserved != NULL) if(lpReserved != NULL)
{ {
EngineExecutePluginReleaseCallBack(); ExtensionManagerPluginReleaseCallBack();
} }
break; break;
} }

View File

@ -216,6 +216,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Global.Engine.cpp" /> <ClCompile Include="Global.Engine.cpp" />
<ClCompile Include="Global.Engine.Extension.cpp" />
<ClCompile Include="Global.Handle.cpp" /> <ClCompile Include="Global.Handle.cpp" />
<ClCompile Include="Global.Mapping.cpp" /> <ClCompile Include="Global.Mapping.cpp" />
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
@ -232,6 +233,7 @@
<ClInclude Include="aplib.h" /> <ClInclude Include="aplib.h" />
<ClInclude Include="definitions.h" /> <ClInclude Include="definitions.h" />
<ClInclude Include="distorm.h" /> <ClInclude Include="distorm.h" />
<ClInclude Include="Global.Engine.Extension.h" />
<ClInclude Include="Global.Engine.h" /> <ClInclude Include="Global.Engine.h" />
<ClInclude Include="Global.Handle.h" /> <ClInclude Include="Global.Handle.h" />
<ClInclude Include="Global.Mapping.h" /> <ClInclude Include="Global.Mapping.h" />

View File

@ -51,6 +51,9 @@
<ClCompile Include="Global.Engine.cpp"> <ClCompile Include="Global.Engine.cpp">
<Filter>Source Files\TitanEngine</Filter> <Filter>Source Files\TitanEngine</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Global.Engine.Extension.cpp">
<Filter>Source Files\TitanEngine</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="resource.h"> <ClInclude Include="resource.h">
@ -92,6 +95,9 @@
<ClInclude Include="Global.Engine.h"> <ClInclude Include="Global.Engine.h">
<Filter>Header Files\TitanEngine</Filter> <Filter>Header Files\TitanEngine</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Global.Engine.Extension.h">
<Filter>Header Files\TitanEngine</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="TitanEngine.rc"> <ResourceCompile Include="TitanEngine.rc">