a8ba10d074Added code that moves module properties to hot-reloaded modules.
Sebastian
2018-11-25 21:26:06 +0000
209a594616Replaced module properties singleton with instance created as part of module manager: - Removed ImGui Module Properties singleton interface and released construction constraints. - Added ImGui Module Properties to ImGui Module Manager. - Moved ImGui Demo to ImGui Module Manager. - ImGui Demo and ImGui Module Commands keep reference to ImGui Module Manager that gives them access to properties.
Sebastian
2018-11-25 20:36:55 +0000
70db3c7b20Replaced console variables in FImGuiModuleProperties with plain variables. Added console commands to toggle states of those properties.
Sebastian
2018-11-25 19:11:48 +0000
e00c1ff9e3Renamed SwitchInputMode to ToggleInput command and interface to provide a better consistency with the engine and between module functions. Note that this commit contains a minor breaking change for custom implementations of UImGuiInputHandler. - Changed "ImGui.SwitchInputMode" command name to "ImGui.ToggleInput". - Changed SwitchInputModeKey property in settings to ToggleInput. - Added temporary mechanism protecting from losing data by moving it from SwitchInputModeKey to ToggleInput and removing deprecated entry from the default config file. - Renamed UImGuiInputHandler protected function from IsSwitchInputModeEvent to IsToggleInputEvent, so custom implementations of that class may require update.
Sebastian
2018-11-24 21:16:25 +0000
c5f3759664Moved console variables and commands to wrapper objects: - Moved property variables to ImGui Module Properties. - Moved console command to ImGui Module Commands (one for now but more will be added). - ImGui Module Commands is created by ImGui Module Manager, what means that commands are registered after module is loaded and unregistered when it is unloaded. - Updated settings to allow more convenient use: Added global pointer to default object and event raised when it is loaded.
Sebastian
2018-11-24 19:54:01 +0000
f67cabbe93Fixed IntelliSense errors caused by wrongly formatted macro definitions in build script file.
Sebastian
2018-11-06 18:57:21 +0000
fc6fd2e498Clean-up in debug code: - Added common debug config file for module-wide debug symbols and loggers. - Added IMGUI_MODULE_DEVELOPER symbol to enable or disable module developer mode, that is intended to add additional module debug options hidden from normal usage. - ImGui Widget debug is only available in developer mode because in normal usage it adds noise to ImGui console variables while not being very useful. - Merged LogImGuiInputHandler and LogImGuiInputHandlerFactory loggers as they are part of the same feature. - Renamed LogImGuiInputState to LogImGuiInput.
Sebastian
2018-10-30 22:25:48 +0000
20d1490bd3Replaced 'ImGui.DrawMouseCursor' console variable with a settings property.
Sebastian
2018-10-28 21:15:02 +0000
b492932055Replaced 'ImGui.DebugDrawOnWorldTick' console variable with conditional compilation switches and extended support to post actor tick event: - Replaced 'ImGui.DebugDrawOnWorldTick' with DRAW_EVENTS_ON_WORLD_TICK_START switch to enforce consistency in project setup. - Added DRAW_EVENTS_ON_POST_ACTOR_TICK to support post actor tick events (only for UE 4.18 or later). - Added DRAW_EVENTS_ORDER_WORLD_BEFORE_MULTI_CONTEXT to allow explicitly define order between multi-context and world-context draw events. - Rules can be configured in ImGui.Build.cs file.
Sebastian
2018-10-28 19:54:18 +0000
b4e959ccd3Changed module type to allow stripping it from selected builds: - Changed module type to 'Developer'. - Added runtime loader that handles automatic module loading in runtime builds (feature can be selectively enabled).
Sebastian
2018-10-17 23:16:28 +0100
6b97a7b724Updated project status.
Sebastian
2018-09-02 15:12:06 +0100
590f0819abRemoved from ImGui.Build.cs reference to own public directory to fix UBT warning in UE 4.20.
UE_4.20
Sebastian
2018-09-02 14:40:15 +0100
588428507aAdded missing UObject/WeakObjectPtr.h include to ImGuiInputHandler.h to improve backward compatibility.
Sebastian
2018-09-02 13:38:44 +0100
dd06fcbbdfAdded support for registering in module user textures to them in ImGui: - Added ImGuiTextureHandle that is implicitly convertible to ImTextureID and can be used directly with ImGui interface. - Added to ImGui Module interface allowing to register, update and release textures or find handles to existing resources. - Refactored Texture Manager and added functions allowing create, update or release resources for user textures. - Loosened resource verification policy in Texture Manager to work smoothly with external requests and to handle gracefully situations when invalid texture id is passed to ImGui. - Introduced ‘error texture’ that is used for invalid resources.
Sebastian
2018-08-15 22:20:46 +0100
9c181463ceReplaced in Texture Manager raw texture pointer with weak object pointer and removed explicit call to IsValidLowLevel.
Sebastian
2018-08-14 20:40:25 +0100
d9220ad536Fixed bad deallocation in Texture Manager and interface to create textures from raw data: - Fixed rather embarrassing overlook in deallocation of data array passed from to CreateTexture from other function. - Changed CreateTexture to use cleanup function passed with data (optional and only needed if data need to be released). Keeping data allocation and deallocation code together should make bugs like this easier to spot and avoid. Additionally this allows for more generic usage.
Sebastian
2018-08-14 20:28:25 +0100
74c794b53eFixed hot-reloading issues. Hot-reloading may be useful when developing this plug-in but it doesn't play well with free functions used in ImGui interface (limitation of the system I guess). Switched to a custom GImGui which after hot-reload can be redirected to a new module. This fixes a crash caused by GImGui in obsolete module pointing to released resources and guarantees that ImGui code remains functional.
Sebastian
2018-08-10 23:53:03 +0100
20a7675787Clean-up: Added a header file for backward compatibility symbols. Keeping rules in one place should help with tracking, help to maintain consistency and reduce clutter in implementation files.
Sebastian
2018-08-10 22:20:33 +0100
9ab12850fbAdded custom property type layout for FImGuiKeyInfo.
Sebastian
2018-07-31 22:09:01 +0100
a90f217ab3Added 'ImGui.SwitchInputMode' command and configurable key binding to DebugExecBindings.
Sebastian
2018-07-30 22:05:59 +0100
eabff7b839Replaced in ImGui Input Handler hard-coded assumptions about console open and stop play session shortcuts with values taken from input settings and input binding manager. Testing functions are available for inheriting classes.
Sebastian
2018-07-10 20:21:35 +0100
daa18fcf25Fixed warning about hiding 'ModuleManager' declaration.
Sebastian
2018-07-10 18:02:43 +0100
5968c3ce84Added ImGui Input Handler and ImGui Settings: - Added ImGui Input Handler class that allows to customize handling of the keyboard and gamepad input. - Added ImGui Settings to allow specify custom input handler implementation. - Added editor support for ImGui Settings. - Input handling in ImGui Widget is divided for querying the handler (more customizable) and actual input processing based on the handler’s response (fixed and simplified). - Removed a need for checking console state in different input handling functions in ImGui Widget by suppressing keyboard focus support when console is opened.
Sebastian
2018-07-10 17:40:57 +0100
6ddc7f2805Updated supported engine version status.
Sebastian
2018-05-24 21:57:39 +0100
f57a73b91bImproved plugin to initialize correctly even when started during earlier loading phases: - Split tick and textures initializations. - Supporting deferred tick initialization, if Slate application is not ready during module startup. - Textures are lazy-loaded before the first use. - ImGui Context Manager initializes font atlas to make sure that ImGui resources are always initialized.
Sebastian
2018-05-24 21:55:25 +0100
ec5bc3e738Fixed error caught with stricter compiler settings.
Sebastian
2018-05-18 19:06:37 +0100
82729a12c8Enabled experimental ImGui gamepad navigation feature: - Updated InputNavigation CVar to support 1: keyboard navigation, 2: gamepad navigation and 3: keyboard + gamepad navigation simultaneously. - Added ImGui interoperability utilities mapping gamepad input events to values in ImGui navigation inputs array. - Added to ImGui Input State support for gamepad navigation inputs. - Refactored ImGui Input State to keep consistent interface for keyboard, mouse and gamepad updates.
Sebastian
2018-05-17 23:25:47 +0100
e83f37d518Enabled experimental ImGui keyboard navigation feature.
Sebastian
2018-05-10 12:15:14 +0100
413b4f407aUpgraded to ImGui 1.61: - Upgraded ImGui framework to 1.61 WIP, which adds a few improvements to context management. - Removed from plugin implementation all the references to default ImGui context. - Removed from ImGui Context Proxy destructor code switching to default ImGui context (there is no default context and decision is left for a higher level manager when to switch and to what context). - Added own font atlas that is shared by all contexts and used explicitly to create Slate resources. - Removed from ImGui Context Proxy workaround that was previously needed for copying cursor data to dynamically created contexts. - Removed explicit saving of context settings before its destruction as this is now handled in ImGui::DestroyContext(). - Reimplemented ImGuiImplementation::GetCursorData() to use new interface.
IMGUI_1.61
Sebastian
2018-05-09 20:22:48 +0100
fa32fd95e3Added to ImGui Widget a canvas map mode that allows to drag and change scale of the ImGui canvas. Map mode allows to reach areas of the canvas that otherwise would be inaccessible (for instance modal windows positioned in the centre of the canvas) and to modify which part should be visible by default.
Sebastian
2018-04-21 22:43:15 +0100
d152b4193cAdded to ImGuiImplementation GetCursorData function allowing to access data associated with ImGui cursors (UVs and size).
Sebastian
2018-04-21 21:40:05 +0100
cfc76ea286Added to ImGui Context Proxy information about context display size.
Sebastian
2018-04-17 23:03:24 +0100
f8e689561fSwitched to FTransform2D when processing ImGui output before rendering it in Slate. This allows for more flexibility when transforming that data. Changed interface of FImGuiDrawList to enforce consistent transformation of vertices and clipping rectangle.
Sebastian
2018-04-17 20:28:29 +0100
2ccd3252ecUpdated information about recent changes.
Sebastian
2018-03-20 23:45:24 +0000
8c1c710646Moved ImGui Draw events, so they are called during World Tick Start. Old behaviour, where those events were called during Post-Tick, can be restored by setting console variable ImGui.DebugDrawOnWorldTick to zero.
Sebastian
2018-03-20 23:24:03 +0000
052ae0a201Reduced lag between producing ImGui output and rendering it: - ImGui Context Proxy Tick function has been split for Tick and Draw. Both functions may now be called separately from different places but they will be processed only once per frame. This opens possibility to define own mechanisms to trigger draw events and to independently update contexts. - Multi-context draw event delegate is passed to ImGui Context Proxy during construction rather than as an argument of Tick function. - To minimise lag between ending ImGui frame and rendering its output, ImGui Widget updates its own context just before painting. - Contexts without widget (editor, dedicated server) are updated by manager during post-tick event. - Instead of setting global CurrentContextIndex by ImGui Context Manager, information about context is passed to ImGui Demo as part of a closure. - Fixed bug in ImGui Demo where inactive contexts were triggering multi-PIE warning.
Sebastian
2018-03-18 19:45:08 +0000
f18e1f0b68Changed to hardware cursor as a default cursor in input mode and added ImGui.DrawMouseCursor console variable to allow to switch to ImGui cursor.
Sebastian
2018-03-13 23:42:37 +0000
fix template unqualified lookup build errors on clang
Mohammad S. Babaei
2018-03-05 17:03:38 +0330
2e994ac124Fixed a few errors and warnings on PS4 and XBox platforms.
Sebastian
2018-02-02 23:14:17 +0000
b2f4f43d7eReplaced static assert about TCHAR being not wider that ImWchar with a runtime check validating whether TCHAR values are in accepted range. Runtime check only happens on platforms where TCHAR is wider than ImWchar.
Sebastian
2018-02-02 22:50:55 +0000
c260a3d824Fixed missing inline keywords causing errors in non-unity or adaptive-unity builds.
Sebastian
2018-01-24 22:58:02 +0000
f40efc265fFixed input issues when application loses focus and added debug code for ImGui input state.
Sebastian
2018-01-15 22:07:28 +0000
933b7f1b3bAdded interface to modify from code console variables that control whether to enable ImGui Input Mode and show ImGui Demo.
Sebastian
2018-01-10 22:53:11 +0000
19b9502e24Updated copyright date.
Sebastian
2018-01-09 21:51:06 +0000
f01cefc30fChanged ImGui Demo to allow selectively show demo window in chosen contexts and to fix problems with some of the examples. Added relevant warning message and description displayed when demo is opened in more than one context.
Sebastian
2018-01-09 19:36:52 +0000
c7d152cc22Updating to ImGui 1.53
Josh Engebretson
2018-01-01 21:13:15 -0500
f0e3f7e82eUpdated project status and information.
Sebastian
2017-11-05 22:49:32 +0000
2b19b2108aUpdated to Unreal Engine 4.18 (backward compatible).
UE_4.19
UE_4.18
Sebastian
2017-11-05 22:36:39 +0000
9db4abcb0aUpdated to Unreal Engine 4.17 (backward compatible): - Removed usage of per-vertex ClipRect. - Replaced usage of GSlateScissorRect with new FSlateWindowElementList::PushClip/PopClip functions. - Defined WITH_OBSOLETE_CLIPPING_API to switch to old implementation for older engine versions.
UE_4.17
Sebastian
2017-11-05 19:41:34 +0000
865ade48c0Updated to Unreal Engine 4.16 (backward compatible): - Replaced obsolete module rules constructors with new versions forwarding read-only target rules to base constructors.
UE_4.16
Sebastian
2017-11-05 16:10:03 +0000
3f33545f8bAdded automatic ImGui context switching when updating different editor and PIE worlds. Allows to use ImGui API during world update with controls being drawn in correct viewport.
Sebastian
2017-10-28 22:25:44 +0100
126b59d2c6Updated project information.
Sebastian
2017-10-10 23:16:51 +0100
8c46591488Added ImGui.ShowDemo console variable to show/hide ImGui demo.
Sebastian
2017-10-03 21:26:59 +0100
00ad746267Added interface to register ImGui debug delegates.
Sebastian
2017-10-03 21:16:17 +0100
1a6aa98f51Added support for session reloading and updated contexts and widgets management: - Added to ImGui Context Proxy a name that is mapped to ini file set in ImGui context. - ImGui Context Manager generates unique context names from world type and context index. - Refactored ImGui Context Manager to have a cleaner separation between editor and non-editor bits. - Fixed context update rules in ImGui Context Manager. - Changed widgets management in ImGui Module Manager to allow automatic garbage collection after viewports are closed and manual removal when module is shutting down. - ImGui Widgets are in full control of communication with context proxies. - Added basic world context utilities. - Refactored world context index utilities and replaced ambiguous 'default context index' with 'editor' and 'game' ones.
Sebastian
2017-09-27 21:16:54 +0100
7e756c7cb5Small clean-up with fixes for few warnings.
Sebastian
2017-09-22 20:23:42 +0100
9c62196cbbUsing ImGui to draw mouse cursor.
Sebastian
2017-09-21 22:09:03 +0100
5625365310Added handling of special input cases: - Different handling of 'Esc' key. If ImGui has active items then it is used to exit edit mode, otherwise it is passed to editor to cancel session. - Suppressing keyboard input when console is opened and retaking it when it is closed. - Fixed issue with losing input when console is closed.
Sebastian
2017-09-16 21:52:14 +0100
c47d911f22Fixed issues with passing input focus between viewport and ImGui Widget.
Sebastian
2017-09-10 21:05:37 +0100
f696393089Added debug code to ImGui Widget: - Added ImGui.Debug.Widget console variable to enable/disable widget state debugging. - Added ImGui ImGui debug for widget state. - Added logging for widget state transitions.
Sebastian
2017-09-09 11:40:44 +0100
f7816ee1fdAdded ImGui.InputEnabled console variable to control when ImGui should receive inputs.
Sebastian
2017-09-02 18:42:41 +0100
77bb73dbceAdded Multi-PIE support: - Added ImGui Context Manager to create and manage ImGui Context Proxies. - Changed ImGui Context Proxy to dynamically create context and allow pairing with input state. - Changed ImGui Module Manager to create one widget per context. - Changed ImGui Widget to work in different input modes. - Changed ImGui Input State to allow partial reset (only mouse or keyboard).
Sebastian
2017-08-28 20:29:07 +0100
53387cf88bChanged modifier keys handling and cleaned ImGui Input State: - Separate modifier keys interface and data from generic keys. - Cleaned interface to better differentiate between full reset and clearing update data. - Fixed bug in code clearing characters.
Sebastian
2017-08-19 21:19:38 +0100
393460f330Added input support: - Added ImGui Input State to collect and store input updates. - Changed Slate ImGui Widget to handle Slate input events and store them in input state. - Changed ImGui Context Proxy to copy input state to its context.
Sebastian
2017-04-22 16:38:04 +0100
35f2d342a0Added support for ImGui context update and rendering: - Added ImGui Module Manager that that implements module logic and manages other module resources. - Added Texture Manager to manage texture resources and maps them to index that can be passed to ImGui context. - Added Context Proxy that represents and manages a single ImGui context. - Added Slate ImGui Widget to render ImGui output.
Sebastian
2017-03-26 21:32:57 +0100
e74e3475d9Integrated ImGui framework: - Added ImGui framework source directory. - Added to ImGui module include paths pointing to ImGui source directory. - Added to ImGui module implementation file that includes ImGui source code to be built as part of the module.
Sebastian
2017-03-18 11:33:14 +0000
cd98f86005Initial commit: - License file and initial readme file. - Plugin and module base configuration. - Repository configuration.
Sebastian
2017-03-17 23:22:13 +0000