This commit is contained in:
ouczbs 2024-05-31 00:36:23 +08:00
parent 3b5ae0c3a1
commit 02f0e58631
3 changed files with 57 additions and 57 deletions

View File

@ -70,7 +70,7 @@ namespace idk::mono
auto klass = Raw();
auto end_klass = envi.Type("Object")->Raw();
while (klass != end_klass)
while (klass && klass != end_klass)
{
for (void* itr = nullptr; auto method = mono_class_get_methods(klass, &itr);)
{

View File

@ -68,8 +68,8 @@ std::optional<std::wstring_view> GetArgValue(std::wstring_view arg, LPWSTR* args
{
std::wstring_view incoming = args[i];
auto val_start = incoming.find_first_of(':');
if(val_start!=incoming.npos && incoming.substr(0,val_start)==arg)
result = incoming.substr(val_start+1);
if (val_start != incoming.npos && incoming.substr(0, val_start) == arg)
result = incoming.substr(val_start + 1);
}
return result;
}
@ -90,9 +90,9 @@ LRESULT ProcessAltTab(idk::Windows& win)//, HWND hwnd, UINT msg, WPARAM wParam,
void MinimizeOnAltTab(idk::Windows& windows)
{
static auto on_alt_tab = [&windows]()->LRESULT//HWND hwnd, UINT msg, WPARAM wParam, [[maybe_unused]] LPARAM lParam) -> LRESULT
{
return ProcessAltTab(windows);// , hwnd, msg, wParam, lParam);
};
{
return ProcessAltTab(windows);// , hwnd, msg, wParam, lParam);
};
windows.OnFocusLost.Listen(on_alt_tab);
}
namespace idk::mt::hack
@ -107,7 +107,7 @@ struct ManagedErrorString
{
ManagedErrorString(DWORD NTStatusMessage, ...);
ManagedErrorString(DWORD NTStatusMessage, int count = 0, DWORD_PTR* test = nullptr);
ManagedErrorString(const ManagedErrorString&) = delete;
ManagedErrorString(const ManagedErrorString&) = delete;
~ManagedErrorString()
{
@ -156,7 +156,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
auto& sys = c->AddSystem<vkn::VulkanWin32GraphicsSystem>();
if (HasArg(L"--simulate", command_lines, num_args))
{
vkn::ExtraConfigs ec{ .enable_simulation=true };
vkn::ExtraConfigs ec{ .enable_simulation = true };
sys.SetExtraConfigs(ec);
}
gSys = &sys;
@ -185,9 +185,9 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
Core::GetSystem<LogSystem>().SetLogDir(idk_app_data.string());
c->Init();
auto project_dir = string{ Core::GetSystem<FileSystem>().GetExeDir() } +"/project/hydeandseek.idk";
auto data_dir = string{ Core::GetSystem<FileSystem>().GetExeDir() };
auto exedir = Core::GetSystem<FileSystem>().GetExeDir();
auto project_dir = string{ exedir } + "/testproj/testproj.idk";
auto data_dir = string{ exedir };
auto arg_proj = GetArgValue(L"--project", command_lines, num_args);
auto arg_data = GetArgValue(L"--engine", command_lines, num_args);
if (arg_proj)
@ -209,7 +209,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
data_dir = derp;
}
auto& filesys = Core::GetSystem<FileSystem>();
filesys.Mount(string{ data_dir } + "/engine_data", "/engine_data", false);
filesys.Mount(string{ data_dir } + "/engine/engine_data", "/engine_data", false);
Core::GetSystem<ProjectManager>().LoadProject(project_dir);
@ -248,7 +248,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
Core::GetResourceManager().RegisterLoader<GraphLoader>(shadergraph::Graph::ext);
Core::GetResourceManager().RegisterFactory<GraphFactory>();
filesys.Mount(string{ data_dir } +"/editor_data", "/editor_data", false);
filesys.Mount(string{ exedir } + "/engine/editor_data", "/editor_data", false);
if (shadergraph::NodeTemplate::GetTable().empty())
shadergraph::NodeTemplate::LoadTable("/editor_data/nodes");
@ -305,7 +305,7 @@ ManagedErrorString::ManagedErrorString(DWORD NTStatusMessage, ...)
&list);
}
ManagedErrorString::ManagedErrorString(DWORD NTStatusMessage, int count , DWORD_PTR* test )
ManagedErrorString::ManagedErrorString(DWORD NTStatusMessage, int count, DWORD_PTR* test)
{
Hand = LoadLibrary(L"NTDLL.DLL");
@ -330,7 +330,7 @@ std::wstring GetReadFlag(DWORD flag)
}
std::wstring AccessViolationDesc(const _EXCEPTION_RECORD& record)
{
ManagedErrorString err{ record.ExceptionCode ,0};
ManagedErrorString err{ record.ExceptionCode ,0 };
auto flag_msg = GetReadFlag(record.ExceptionInformation[0]);
if (err.numChars)
{
@ -338,22 +338,22 @@ std::wstring AccessViolationDesc(const _EXCEPTION_RECORD& record)
do
{
std::wstring result(estimated_size+1,L' ');
std::wstring result(estimated_size + 1, L' ');
int numCharsWritten = std::swprintf(result.data(), result.size(), err.lpMessageBuffer, record.ExceptionAddress, record.ExceptionInformation[1], flag_msg.c_str());
if (numCharsWritten > 0)
{
result.resize(numCharsWritten);
return result;
}
else
{
auto lower_bound = estimated_size;
lower_bound = 1;
estimated_size = std::max(estimated_size, lower_bound);
estimated_size *= 2;
continue;
}
int numCharsWritten = std::swprintf(result.data(), result.size(), err.lpMessageBuffer, record.ExceptionAddress, record.ExceptionInformation[1], flag_msg.c_str());
if (numCharsWritten > 0)
{
result.resize(numCharsWritten);
return result;
}
else
{
auto lower_bound = estimated_size;
lower_bound = 1;
estimated_size = std::max(estimated_size, lower_bound);
estimated_size *= 2;
continue;
}
} while (true);
}
return L"";
@ -369,29 +369,29 @@ std::wstring GetErrorString(const _EXCEPTION_RECORD& record)
codeName = L"Non-System Exception";
sdescription = ((std::exception*)record.ExceptionInformation[1])->what();
break;
case EXCEPTION_ACCESS_VIOLATION : codeName = L"EXCEPTION_ACCESS_VIOLATION "; description = AccessViolationDesc(record); break;
case EXCEPTION_DATATYPE_MISALIGNMENT : codeName = L"EXCEPTION_DATATYPE_MISALIGNMENT "; break;
case EXCEPTION_BREAKPOINT : codeName = L"EXCEPTION_BREAKPOINT "; break;
case EXCEPTION_SINGLE_STEP : codeName = L"EXCEPTION_SINGLE_STEP "; break;
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED : codeName = L"EXCEPTION_ARRAY_BOUNDS_EXCEEDED "; break;
case EXCEPTION_FLT_DENORMAL_OPERAND : codeName = L"EXCEPTION_FLT_DENORMAL_OPERAND "; break;
case EXCEPTION_FLT_DIVIDE_BY_ZERO : codeName = L"EXCEPTION_FLT_DIVIDE_BY_ZERO "; break;
case EXCEPTION_FLT_INEXACT_RESULT : codeName = L"EXCEPTION_FLT_INEXACT_RESULT "; break;
case EXCEPTION_FLT_INVALID_OPERATION : codeName = L"EXCEPTION_FLT_INVALID_OPERATION "; break;
case EXCEPTION_FLT_OVERFLOW : codeName = L"EXCEPTION_FLT_OVERFLOW "; break;
case EXCEPTION_FLT_STACK_CHECK : codeName = L"EXCEPTION_FLT_STACK_CHECK "; break;
case EXCEPTION_FLT_UNDERFLOW : codeName = L"EXCEPTION_FLT_UNDERFLOW "; break;
case EXCEPTION_INT_DIVIDE_BY_ZERO : codeName = L"EXCEPTION_INT_DIVIDE_BY_ZERO "; break;
case EXCEPTION_INT_OVERFLOW : codeName = L"EXCEPTION_INT_OVERFLOW "; break;
case EXCEPTION_PRIV_INSTRUCTION : codeName = L"EXCEPTION_PRIV_INSTRUCTION "; break;
case EXCEPTION_IN_PAGE_ERROR : codeName = L"EXCEPTION_IN_PAGE_ERROR "; break;
case EXCEPTION_ILLEGAL_INSTRUCTION : codeName = L"EXCEPTION_ILLEGAL_INSTRUCTION "; break;
case EXCEPTION_NONCONTINUABLE_EXCEPTION : codeName = L"EXCEPTION_NONCONTINUABLE_EXCEPTION "; break;
case EXCEPTION_STACK_OVERFLOW : codeName = L"EXCEPTION_STACK_OVERFLOW "; break;
case EXCEPTION_INVALID_DISPOSITION : codeName = L"EXCEPTION_INVALID_DISPOSITION "; break;
case EXCEPTION_GUARD_PAGE : codeName = L"EXCEPTION_GUARD_PAGE "; break;
case EXCEPTION_INVALID_HANDLE : codeName = L"EXCEPTION_INVALID_HANDLE "; break;
case CONTROL_C_EXIT : codeName = L"CONTROL_C_EXIT "; break;
case EXCEPTION_ACCESS_VIOLATION: codeName = L"EXCEPTION_ACCESS_VIOLATION "; description = AccessViolationDesc(record); break;
case EXCEPTION_DATATYPE_MISALIGNMENT: codeName = L"EXCEPTION_DATATYPE_MISALIGNMENT "; break;
case EXCEPTION_BREAKPOINT: codeName = L"EXCEPTION_BREAKPOINT "; break;
case EXCEPTION_SINGLE_STEP: codeName = L"EXCEPTION_SINGLE_STEP "; break;
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: codeName = L"EXCEPTION_ARRAY_BOUNDS_EXCEEDED "; break;
case EXCEPTION_FLT_DENORMAL_OPERAND: codeName = L"EXCEPTION_FLT_DENORMAL_OPERAND "; break;
case EXCEPTION_FLT_DIVIDE_BY_ZERO: codeName = L"EXCEPTION_FLT_DIVIDE_BY_ZERO "; break;
case EXCEPTION_FLT_INEXACT_RESULT: codeName = L"EXCEPTION_FLT_INEXACT_RESULT "; break;
case EXCEPTION_FLT_INVALID_OPERATION: codeName = L"EXCEPTION_FLT_INVALID_OPERATION "; break;
case EXCEPTION_FLT_OVERFLOW: codeName = L"EXCEPTION_FLT_OVERFLOW "; break;
case EXCEPTION_FLT_STACK_CHECK: codeName = L"EXCEPTION_FLT_STACK_CHECK "; break;
case EXCEPTION_FLT_UNDERFLOW: codeName = L"EXCEPTION_FLT_UNDERFLOW "; break;
case EXCEPTION_INT_DIVIDE_BY_ZERO: codeName = L"EXCEPTION_INT_DIVIDE_BY_ZERO "; break;
case EXCEPTION_INT_OVERFLOW: codeName = L"EXCEPTION_INT_OVERFLOW "; break;
case EXCEPTION_PRIV_INSTRUCTION: codeName = L"EXCEPTION_PRIV_INSTRUCTION "; break;
case EXCEPTION_IN_PAGE_ERROR: codeName = L"EXCEPTION_IN_PAGE_ERROR "; break;
case EXCEPTION_ILLEGAL_INSTRUCTION: codeName = L"EXCEPTION_ILLEGAL_INSTRUCTION "; break;
case EXCEPTION_NONCONTINUABLE_EXCEPTION: codeName = L"EXCEPTION_NONCONTINUABLE_EXCEPTION "; break;
case EXCEPTION_STACK_OVERFLOW: codeName = L"EXCEPTION_STACK_OVERFLOW "; break;
case EXCEPTION_INVALID_DISPOSITION: codeName = L"EXCEPTION_INVALID_DISPOSITION "; break;
case EXCEPTION_GUARD_PAGE: codeName = L"EXCEPTION_GUARD_PAGE "; break;
case EXCEPTION_INVALID_HANDLE: codeName = L"EXCEPTION_INVALID_HANDLE "; break;
case CONTROL_C_EXIT: codeName = L"CONTROL_C_EXIT "; break;
default:
codeName = L"Unknown Exception";
@ -403,8 +403,8 @@ std::wstring GetErrorString(const _EXCEPTION_RECORD& record)
stream << sdescription.c_str();
else
stream << description;
stream<< L"\nArgument Values: ";
for (auto c = record.NumberParameters; c >0; --c)
stream << L"\nArgument Values: ";
for (auto c = record.NumberParameters; c > 0; --c)
{
auto i = record.NumberParameters - c;
stream << L"[" << i << L"]: 0x" << std::hex << record.ExceptionInformation[i] << L",";

View File

@ -4,7 +4,7 @@
namespace std
{
template<>
/*template<>
struct hash<vk::DescriptorSetLayout>
{
size_t operator()(const vk::DescriptorSetLayout& dsl)const
@ -27,5 +27,5 @@ namespace std
{
return reinterpret_cast<intptr_t>(s.operator VkSemaphore());
}
};
};*/
}