aboutsummaryrefslogtreecommitdiff
path: root/src/mapgen_v6.h
Commit message (Expand)AuthorAge
* Add MapSettingsManager and new mapgen setting script API functionskwolekr2016-07-03
* Mapgen: Refactor mapgen creation and managementkwolekr2016-07-03
* FindSpawnPos: Let mapgens decide what spawn altitude is suitableparamat2016-02-09
* Mapgen: Add global 'decorations' flagparamat2015-11-21
* Mgv6: Move global mapgen flag 'flat' into mgv6 spflagsparamat2015-11-13
* Mapgen: Use mapgen-specific names for constants in headersparamat2015-10-09
* Mgv6: Enable snowbiomes by default. Double biome noise spread. 3 octaves, 0.5...paramat2015-05-26
* Mapgen v5/6/7: Cleanup node resolver and aliasesparamat2015-05-12
* Mgv6: Add optional snow biomesparamat2015-04-12
* Mgv6: Remove addDirtGravelBlobs, replaced by blob ore in Minetest Gameparamat2015-03-18
* Respect game mapgen flags and save world noise paramsngosang2015-03-07
* Fix some lingering code style issueskwolekr2014-12-29
* Mapgen: Use getBlockSeed2() for blockseeds (much better uniformity)kwolekr2014-12-29
* Mapgens: Rename m_emerge to prevent name collisionskwolekr2014-12-12
* Rewrite generate notification mechanismkwolekr2014-12-06
* Fix warnings and other misc. minor changeskwolekr2014-11-14
* Add Generator Element Management frameworkkwolekr2014-11-12
* Make flag strings clear specified flag with 'no' prefixkwolekr2014-02-08
* Huge overhaul of the entire MapgenParams systemkwolekr2014-02-03
* Dungeongen: Create dungeon gen tuneables; add desert temples for Mapgen V6kwolekr2013-12-07
* Add minetest.get_mapgen_object to APIkwolekr2013-06-27
* Add initial Decoration support, many misc. improvements & modificationskwolekr2013-06-17
* Remove no virtual dtor warnings, make MapgenParams contain actual NoiseParamskwolekr2013-05-19
* Class-ify caves & move to cavegen.cpp, fix cave regression, add caves to Mapg...kwolekr2013-04-21
* Add Ore infrastructure and l_register_ore()kwolekr2013-03-24
* Mapgen indev: float islands, larger far biomesproller2013-03-24
* Add jungle grass to jungleskwolekr2013-03-17
* Some minor cleanups from the last commitkwolekr2013-03-16
* initial mapgen indev version with farscale feature and huge cavesproller2013-03-16
* Re-add jungles, apple treeskwolekr2013-03-16
* Clean up Mapgenkwolekr2013-03-11
* Re-add dungeons in new dungeongen.cppkwolekr2013-03-10
* Update Copyright YearsSfan52013-02-24
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
* Make mapgen factory setup more elegant, add mapgen_v6.hkwolekr2013-01-23
d::endl; errorstream << file << ":" << line << ": " << function << ": An engine assumption '" << assertion << "' failed." << std::endl; abort(); } void fatal_error_fn(const char *msg, const char *file, unsigned int line, const char *function) { #if USE_CURSES g_term_console.stopAndWaitforThread(); #endif errorstream << std::endl << "In thread " << std::hex << std::this_thread::get_id() << ":" << std::endl; errorstream << file << ":" << line << ": " << function << ": A fatal error occurred: " << msg << std::endl; abort(); } #ifdef _MSC_VER const char *Win32ExceptionCodeToString(DWORD exception_code) { switch (exception_code) { case EXCEPTION_ACCESS_VIOLATION: return "Access violation"; case EXCEPTION_DATATYPE_MISALIGNMENT: return "Misaligned data access"; case EXCEPTION_BREAKPOINT: return "Breakpoint reached"; case EXCEPTION_SINGLE_STEP: return "Single debug step"; case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: return "Array access out of bounds"; case EXCEPTION_FLT_DENORMAL_OPERAND: return "Denormal floating point operand"; case EXCEPTION_FLT_DIVIDE_BY_ZERO: return "Floating point division by zero"; case EXCEPTION_FLT_INEXACT_RESULT: return "Inaccurate floating point result"; case EXCEPTION_FLT_INVALID_OPERATION: return "Invalid floating point operation"; case EXCEPTION_FLT_OVERFLOW: return "Floating point exponent overflow"; case EXCEPTION_FLT_STACK_CHECK: return "Floating point stack overflow or underflow"; case EXCEPTION_FLT_UNDERFLOW: return "Floating point exponent underflow"; case EXCEPTION_INT_DIVIDE_BY_ZERO: return "Integer division by zero"; case EXCEPTION_INT_OVERFLOW: return "Integer overflow"; case EXCEPTION_PRIV_INSTRUCTION: return "Privileged instruction executed"; case EXCEPTION_IN_PAGE_ERROR: return "Could not access or load page"; case EXCEPTION_ILLEGAL_INSTRUCTION: return "Illegal instruction encountered"; case EXCEPTION_NONCONTINUABLE_EXCEPTION: return "Attempted to continue after fatal exception"; case EXCEPTION_STACK_OVERFLOW: return "Stack overflow"; case EXCEPTION_INVALID_DISPOSITION: return "Invalid disposition returned to the exception dispatcher"; case EXCEPTION_GUARD_PAGE: return "Attempted guard page access"; case EXCEPTION_INVALID_HANDLE: return "Invalid handle"; } return "Unknown exception"; } long WINAPI Win32ExceptionHandler(struct _EXCEPTION_POINTERS *pExceptInfo) { char buf[512]; MINIDUMP_EXCEPTION_INFORMATION mdei; MINIDUMP_USER_STREAM_INFORMATION mdusi; MINIDUMP_USER_STREAM mdus; bool minidump_created = false; std::string dumpfile = porting::path_user + DIR_DELIM PROJECT_NAME ".dmp"; std::string version_str(PROJECT_NAME " "); version_str += g_version_hash; HANDLE hFile = CreateFileA(dumpfile.c_str(), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) goto minidump_failed; if (SetEndOfFile(hFile) == FALSE) goto minidump_failed; mdei.ClientPointers = NULL; mdei.ExceptionPointers = pExceptInfo; mdei.ThreadId = GetCurrentThreadId(); mdus.Type = CommentStreamA; mdus.BufferSize = version_str.size(); mdus.Buffer = (PVOID)version_str.c_str(); mdusi.UserStreamArray = &mdus; mdusi.UserStreamCount = 1; if (MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &mdei, &mdusi, NULL) == FALSE) goto minidump_failed; minidump_created = true; minidump_failed: CloseHandle(hFile); DWORD excode = pExceptInfo->ExceptionRecord->ExceptionCode; _snprintf(buf, sizeof(buf), " >> === FATAL ERROR ===\n" " >> %s (Exception 0x%08X) at 0x%p\n", Win32ExceptionCodeToString(excode), excode, pExceptInfo->ExceptionRecord->ExceptionAddress); dstream << buf; if (minidump_created) dstream << " >> Saved dump to " << dumpfile << std::endl; else dstream << " >> Failed to save dump" << std::endl; return EXCEPTION_EXECUTE_HANDLER; } #endif void debug_set_exception_handler() { #ifdef _MSC_VER SetUnhandledExceptionFilter(Win32ExceptionHandler); #endif }