diff --git a/CHANGELOG.md b/CHANGELOG.md index 78bf16d1c..30710e1f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): ## [Version 1.8.1](link to release) - yyyy-mm-dd +### New features +* Added ability to perform Lua commands in the console window in realtime. + ### Bug fixes * Fixed particles remaining in the level after reloading from the savegame. * Fixed particles being canceled by fog bulbs. @@ -35,7 +38,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed custom shatter sounds with custom sound IDs not playing correctly. * Fixed crashes with sound samples larger than 2 megabytes. -### New Features +### New features * Added multithreading and an option for it to flow system settings. * Added ability to use floor trapdoors, keys and puzzle items underwater. - You must update your Lara object: https://github.com/TombEngine/Resources/raw/main/Wad2%20Objects/Lara/TEN_Lara.wad2 @@ -84,7 +87,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed gravity being applied underwater when exiting the fly cheat. * Fixed gravity being applied when vaulting on the same frame as the player lands. -### New Features +### New features * Added realtime shader reloading in debug mode by pressing F9 key. * Added load, save, stopwatch and compass as a functional pick-up items with ability to add or remove them from inventory. * Increased particle limit from 1024 to 4096. @@ -134,7 +137,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed spotlight shadows. * Fixed Skeleton and Mummy not reacting to shotgun hits. -### New Features +### New features * Added classic mirror effect with ability to reflect moveables and static meshes. * Added ability to customize many hardcoded parameters, such as flare, weapon, and hair settings. * Added dynamic shadow casting on objects and static meshes. @@ -210,7 +213,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed display sprites and display strings rendering in the inventory background. * Fixed young Lara hair drawing. https://tombengine.com/docs/level-settings/#young_lara -### New Features +### New features * Added high framerate mode (also known as 60 FPS mode). * Added a customisable global lensflare effect. https://tombengine.com/docs/level-settings/#lensflare * Added a customisable starry sky and meteor effect. https://tombengine.com/docs/level-settings/#stars @@ -270,7 +273,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed bottom collision for solid static meshes. * Fixed T-Rex's head rotation. -### New Features +### New features * Auto-switch to a crawl state if player start position is in a crawlspace. * Allow directional flame emitter (negative OCBs) to be rotated at any angle. * Revise wall spikes: @@ -317,7 +320,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fixed incorrect light collection in some cases. * Fixed normal mapping for rooms, items, and statics.' -### New Features +### New features * Added ambient occlusion (SSAO). * Added new post-process workflow (monochrome, negative, exclusion) with tinting. * Added SMAA antialiasing instead of MSAA. @@ -376,7 +379,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix camera snap when disengaging the look-around mode. * Fix TR4 mapper not being visible. -### New Features +### New features * Improve head-on wall collision. * Overhaul pushables: - Separate climbable and non-climbable pushable object slots. @@ -459,7 +462,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix incorrect culling for scaled static meshes. * Fix normal mapping. -### New Features +### New features * Add ability to save screenshot in the "Screenshots" subfolder by pressing the "Print screen" key. * Implement separate audio track channel for playing voiceovers with subtitles in .srt format. * Don't stop ambience when Lara dies. @@ -507,7 +510,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix rendering for static meshes with custom blending modes and alpha transparency. * Fix inconsistent multiline string spacing on different display modes. -### New Features +### New features * Remove search object 4 hardcoded meshswap activated with a flipmap. * Add TR1 cowboy. * Add TR3 wall mounted blade. @@ -565,7 +568,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): - Please note you must use the patched version found here: https://github.com/TombEngine/Resources/blob/main/Wad2%20Objects/tr5_Imp.wad2 * Fix and improve wraith tails. -### New Features/Amedments +### New features/Amedments * Add dedicated WRAITH_TRAP object with enhanced effects. - OCB 0: Effect disabled. - OCB 1: Effect enabled. @@ -614,7 +617,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix TR3 big gun spawning rocket with 0 life which caused an immediate explosion. * Fix TR3 Tony and add boss effect for him. -### New Features +### New features * Add TR3 civvy. * Add TR3 electric cleaner. * Add TR3 Sophia Leigh with following OCBs: @@ -666,7 +669,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix grenade and rocket launcher lighting. * Fix ceiling trapdoor and floor trapdoor that Lara couldn't open manually. -### New Features +### New features * Make enemies drop pickups at first available bounding box corner point, not centerpoint. * Restore original volumetric explosion effects. * Add TR3 lizard and Puna. @@ -718,7 +721,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): * Fix bone rotations of some entities. * Fix Lara's animation for cog switch release. -### New Features +### New features * Added new OCB to cog switch object: - Use OCB 0 to have the traditional behaviour. - Use any other OCB to can use the Cog Switch without need of any door linked. @@ -732,7 +735,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): ## [Version 1.0.4](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.2) - 2022-12-16 -### New Features +### New features * Add generic assignable effects for moveables - fire, sparks, smoke and laser / electric ignite. * Add ability to burn enemies with FLAME_EMITTER_1 and death blocks. * Add wireframe mode and other visual debug information (switch by F10/F11 debug page scroll hotkeys). @@ -804,7 +807,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): ## [Version 1.0.3](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6.1) - 2022-11-18 -### New Features +### New features * Add ledge jumps (Lara object must be updated with new animations to make it work). * Allow any object slot to be used as a meshswap. * Add OCB 1 for rollingball to make it silent. @@ -872,7 +875,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): ## [Version 1.0.2](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.6) - 2022-09-16 -### New Features +### New features * Fix removing Pistols with TakeItem and SetItemCount. * Allow saving and loading of Vec3s in LevelVars and GameVars. * Support volume triggers made with node editor. @@ -927,7 +930,7 @@ TombEngine releases are located in this repository (alongside with Tomb Editor): ## [Version 1.0.1](https://github.com/TombEngine/TombEditorReleases/releases/tag/v1.5.2) - 2022-08-16 -### New Features +### New features * Added antialiasing support. * Added static mesh scaling support. * Added free rotation for teeth spikes instead of using OCB codes. diff --git a/TombEngine/Specific/winmain.cpp b/TombEngine/Specific/winmain.cpp index bd7b2cefa..d120636c4 100644 --- a/TombEngine/Specific/winmain.cpp +++ b/TombEngine/Specific/winmain.cpp @@ -30,8 +30,8 @@ using std::cout; using std::endl; WINAPP App; -unsigned int ThreadID; -uintptr_t ThreadHandle; +unsigned int ThreadID, ConsoleThreadID; +uintptr_t ThreadHandle, ConsoleThreadHandle; HACCEL hAccTable; bool DebugMode = false; HWND WindowsHandle; @@ -242,6 +242,37 @@ bool GenerateDummyLevel(const std::string& levelPath) return true; } +unsigned CALLBACK ConsoleInput(void*) +{ + std::string input; + + while (!ThreadEnded) + { + if (!std::getline(std::cin, input)) + break; + + if (g_GameScript == nullptr) + { + TENLog("Scripting engine not initialized.", LogLevel::Error); + continue; + } + else + { + try + { + g_GameScript->ExecuteString(input); + } + catch (const exception& ex) + { + std::string error = ex.what(); + TENLog("Error executing " + input + ": " + error.substr(error.find(":1: ") + 4), LogLevel::Error); + } + } + } + + return true; +} + void WinProcMsg() { MSG msg; @@ -406,7 +437,9 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine #ifndef _DEBUG if (!DebugMode) ShowWindow(GetConsoleWindow(), 0); + else #endif + ConsoleThreadHandle = BeginThread(ConsoleInput, ConsoleThreadID); // Clear application structure. memset(&App, 0, sizeof(WINAPP)); @@ -615,6 +648,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine void WinClose() { + CloseHandle((HANDLE)ConsoleThreadHandle); WaitForSingleObject((HANDLE)ThreadHandle, 5000); DestroyAcceleratorTable(hAccTable);