mirror of
https://github.com/kevinporetti/UnrealImGui.git
synced 2025-01-18 08:20:32 +00:00
Renamed 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.
This commit is contained in:
parent
c5f3759664
commit
e00c1ff9e3
@ -24,7 +24,7 @@ DEFINE_LOG_CATEGORY(LogImGuiInputHandler);
|
|||||||
FImGuiInputResponse UImGuiInputHandler::OnKeyDown(const FKeyEvent& KeyEvent)
|
FImGuiInputResponse UImGuiInputHandler::OnKeyDown(const FKeyEvent& KeyEvent)
|
||||||
{
|
{
|
||||||
// If this is an input mode switch event then handle it here and consume.
|
// If this is an input mode switch event then handle it here and consume.
|
||||||
if (IsSwitchInputModeEvent(KeyEvent))
|
if (IsToggleInputEvent(KeyEvent))
|
||||||
{
|
{
|
||||||
FImGuiModuleProperties::Get().ToggleInput(ECVF_SetByConsole);
|
FImGuiModuleProperties::Get().ToggleInput(ECVF_SetByConsole);
|
||||||
return FImGuiInputResponse().RequestConsume();
|
return FImGuiInputResponse().RequestConsume();
|
||||||
@ -89,11 +89,11 @@ namespace
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UImGuiInputHandler::IsSwitchInputModeEvent(const FKeyEvent& KeyEvent) const
|
bool UImGuiInputHandler::IsToggleInputEvent(const FKeyEvent& KeyEvent) const
|
||||||
{
|
{
|
||||||
return GImGuiSettings
|
return GImGuiSettings
|
||||||
&& (KeyEvent.GetKey() == GImGuiSettings->GetSwitchInputModeKey().Key)
|
&& (KeyEvent.GetKey() == GImGuiSettings->GetToggleInputKey().Key)
|
||||||
&& AreModifiersMatching(GImGuiSettings->GetSwitchInputModeKey(), KeyEvent);
|
&& AreModifiersMatching(GImGuiSettings->GetToggleInputKey(), KeyEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UImGuiInputHandler::HasImGuiActiveItem() const
|
bool UImGuiInputHandler::HasImGuiActiveItem() const
|
||||||
|
@ -12,12 +12,12 @@ namespace CommandNames
|
|||||||
{
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const TCHAR* SwitchInputMode = TEXT("ImGui.SwitchInputMode");
|
const TCHAR* ToggleInput = TEXT("ImGui.ToggleInput");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FImGuiModuleCommands::FImGuiModuleCommands()
|
FImGuiModuleCommands::FImGuiModuleCommands()
|
||||||
: ToggleInputCommand(CommandNames::SwitchInputMode,
|
: ToggleInputCommand(CommandNames::ToggleInput,
|
||||||
TEXT("Switch ImGui input mode."),
|
TEXT("Switch ImGui input mode."),
|
||||||
FConsoleCommandDelegate::CreateRaw(this, &FImGuiModuleCommands::ToggleInput))
|
FConsoleCommandDelegate::CreateRaw(this, &FImGuiModuleCommands::ToggleInput))
|
||||||
{
|
{
|
||||||
@ -46,9 +46,9 @@ void FImGuiModuleCommands::InitializeSettings()
|
|||||||
|
|
||||||
void FImGuiModuleCommands::RegisterSettingsDelegates()
|
void FImGuiModuleCommands::RegisterSettingsDelegates()
|
||||||
{
|
{
|
||||||
if (GImGuiSettings && !GImGuiSettings->OnSwitchInputModeKeyChanged.IsBoundToObject(this))
|
if (GImGuiSettings && !GImGuiSettings->OnToggleInputKeyChanged.IsBoundToObject(this))
|
||||||
{
|
{
|
||||||
GImGuiSettings->OnSwitchInputModeKeyChanged.AddRaw(this, &FImGuiModuleCommands::UpdateToggleInputKeyBinding);
|
GImGuiSettings->OnToggleInputKeyChanged.AddRaw(this, &FImGuiModuleCommands::UpdateToggleInputKeyBinding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ void FImGuiModuleCommands::UnregisterSettingsDelegates()
|
|||||||
{
|
{
|
||||||
if (GImGuiSettings)
|
if (GImGuiSettings)
|
||||||
{
|
{
|
||||||
GImGuiSettings->OnSwitchInputModeKeyChanged.RemoveAll(this);
|
GImGuiSettings->OnToggleInputKeyChanged.RemoveAll(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ void FImGuiModuleCommands::UpdateToggleInputKeyBinding()
|
|||||||
{
|
{
|
||||||
if (GImGuiSettings)
|
if (GImGuiSettings)
|
||||||
{
|
{
|
||||||
DebugExecBindings::UpdatePlayerInputs(GImGuiSettings->GetSwitchInputModeKey(), CommandNames::SwitchInputMode);
|
DebugExecBindings::UpdatePlayerInputs(GImGuiSettings->GetToggleInputKey(), CommandNames::ToggleInput);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,32 @@ void UImGuiSettings::PostInitProperties()
|
|||||||
{
|
{
|
||||||
Super::PostInitProperties();
|
Super::PostInitProperties();
|
||||||
|
|
||||||
|
if (SwitchInputModeKey_DEPRECATED.Key.IsValid() && !ToggleInput.Key.IsValid())
|
||||||
|
{
|
||||||
|
const FString ConfigFileName = GetDefaultConfigFilename();
|
||||||
|
|
||||||
|
// Move value to the new property.
|
||||||
|
ToggleInput = MoveTemp(SwitchInputModeKey_DEPRECATED);
|
||||||
|
|
||||||
|
// Remove from configuration file entry for obsolete property.
|
||||||
|
if (FConfigFile* ConfigFile = GConfig->Find(ConfigFileName, false))
|
||||||
|
{
|
||||||
|
if (FConfigSection* Section = ConfigFile->Find(TEXT("/Script/ImGui.ImGuiSettings")))
|
||||||
|
{
|
||||||
|
if (Section->Remove(TEXT("SwitchInputModeKey")))
|
||||||
|
{
|
||||||
|
ConfigFile->Dirty = true;
|
||||||
|
GConfig->Flush(false, ConfigFileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to configuration file entry for new property.
|
||||||
|
UpdateSinglePropertyInConfigFile(
|
||||||
|
UImGuiSettings::StaticClass()->FindPropertyByName(GET_MEMBER_NAME_CHECKED(UImGuiSettings, ToggleInput)),
|
||||||
|
ConfigFileName);
|
||||||
|
}
|
||||||
|
|
||||||
if (IsTemplate())
|
if (IsTemplate())
|
||||||
{
|
{
|
||||||
GImGuiSettings = this;
|
GImGuiSettings = this;
|
||||||
@ -74,9 +100,9 @@ void UImGuiSettings::OnPropertyChanged(class UObject* ObjectBeingModified, struc
|
|||||||
{
|
{
|
||||||
OnImGuiInputHandlerClassChanged.Broadcast();
|
OnImGuiInputHandlerClassChanged.Broadcast();
|
||||||
}
|
}
|
||||||
else if (UpdatedPropertyName == GET_MEMBER_NAME_CHECKED(UImGuiSettings, SwitchInputModeKey))
|
else if (UpdatedPropertyName == GET_MEMBER_NAME_CHECKED(UImGuiSettings, ToggleInput))
|
||||||
{
|
{
|
||||||
OnSwitchInputModeKeyChanged.Broadcast();
|
OnToggleInputKeyChanged.Broadcast();
|
||||||
}
|
}
|
||||||
else if (UpdatedPropertyName == GET_MEMBER_NAME_CHECKED(UImGuiSettings, bUseSoftwareCursor))
|
else if (UpdatedPropertyName == GET_MEMBER_NAME_CHECKED(UImGuiSettings, bUseSoftwareCursor))
|
||||||
{
|
{
|
||||||
|
@ -59,19 +59,19 @@ public:
|
|||||||
// Path to custom implementation of ImGui Input Handler.
|
// Path to custom implementation of ImGui Input Handler.
|
||||||
const FStringClassReference& GetImGuiInputHandlerClass() const { return ImGuiInputHandlerClass; }
|
const FStringClassReference& GetImGuiInputHandlerClass() const { return ImGuiInputHandlerClass; }
|
||||||
|
|
||||||
// Get mapping for 'ImGui.SwitchInputMode' command.
|
// Get the shortcut key info for 'ImGui.ToggleInput' command.
|
||||||
const FImGuiKeyInfo& GetSwitchInputModeKey() const { return SwitchInputModeKey; }
|
const FImGuiKeyInfo& GetToggleInputKey() const { return ToggleInput; }
|
||||||
|
|
||||||
// Check whether ImGui should draw its own software cursor.
|
// Check whether ImGui should draw its own software cursor.
|
||||||
bool UseSoftwareCursor() const { return bUseSoftwareCursor; }
|
bool UseSoftwareCursor() const { return bUseSoftwareCursor; }
|
||||||
|
|
||||||
// Delegate raised when ImGuiInputHandlerClass property has changed.
|
// Delegate raised when ImGuiInputHandlerClass is changed.
|
||||||
FSimpleMulticastDelegate OnImGuiInputHandlerClassChanged;
|
FSimpleMulticastDelegate OnImGuiInputHandlerClassChanged;
|
||||||
|
|
||||||
// Delegate raised when SwitchInputModeKey property has changed.
|
// Delegate raised when ToggleInput key is changed.
|
||||||
FSimpleMulticastDelegate OnSwitchInputModeKeyChanged;
|
FSimpleMulticastDelegate OnToggleInputKeyChanged;
|
||||||
|
|
||||||
// Delegate raised when SoftwareCursorEnabled property has changed.
|
// Delegate raised when SoftwareCursorEnabled property is changed.
|
||||||
FSimpleMulticastDelegate OnSoftwareCursorChanged;
|
FSimpleMulticastDelegate OnSoftwareCursorChanged;
|
||||||
|
|
||||||
virtual void PostInitProperties() override;
|
virtual void PostInitProperties() override;
|
||||||
@ -84,13 +84,17 @@ protected:
|
|||||||
UPROPERTY(EditAnywhere, config, Category = "Extensions", meta = (MetaClass = "ImGuiInputHandler"))
|
UPROPERTY(EditAnywhere, config, Category = "Extensions", meta = (MetaClass = "ImGuiInputHandler"))
|
||||||
FStringClassReference ImGuiInputHandlerClass;
|
FStringClassReference ImGuiInputHandlerClass;
|
||||||
|
|
||||||
// Define a custom key binding to 'ImGui.SwitchInputMode' command. Binding is only set if key is valid.
|
// Define a shortcut key to 'ImGui.ToggleInput' command. Binding is only set if the key field is valid.
|
||||||
// Note that modifier key properties can be set to one of the three values: undetermined means that state of the given
|
// Note that modifier key properties can be set to one of the three values: undetermined means that state of the given
|
||||||
// modifier is not tested, checked means that it needs to be pressed and unchecked means that it cannot be pressed.
|
// modifier is not important, checked means that it needs to be pressed and unchecked means that it cannot be pressed.
|
||||||
//
|
//
|
||||||
// This binding is using Player Input's DebugExecBindings which only works in non-shipment builds.
|
// This binding is using Player Input's DebugExecBindings which only works in non-shipment builds.
|
||||||
UPROPERTY(EditAnywhere, config, Category = "Keyboard Shortcuts")
|
UPROPERTY(EditAnywhere, config, Category = "Keyboard Shortcuts")
|
||||||
FImGuiKeyInfo SwitchInputModeKey;
|
FImGuiKeyInfo ToggleInput;
|
||||||
|
|
||||||
|
// Deprecated name for ToggleInput. Kept temporarily to automatically move old configuration.
|
||||||
|
UPROPERTY(config)
|
||||||
|
FImGuiKeyInfo SwitchInputModeKey_DEPRECATED;
|
||||||
|
|
||||||
// If true, then in input mode ImGui will draw its own cursor in place of the hardware one.
|
// If true, then in input mode ImGui will draw its own cursor in place of the hardware one.
|
||||||
// When disabled (default) there is a noticeable difference between cursor position seen by ImGui and position on
|
// When disabled (default) there is a noticeable difference between cursor position seen by ImGui and position on
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
|
// Distributed under the MIT License (MIT) (see accompanying LICENSE file)
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
@ -174,12 +174,12 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether this key event can switch ImGui input mode (as defined in settings).
|
* Checks whether this key event can toggle ImGui input (as defined in settings).
|
||||||
*
|
*
|
||||||
* @param KeyEvent - Key event to test.
|
* @param KeyEvent - Key event to test.
|
||||||
* @returns True, if this key is bound to 'ImGui.SwitchInputMode' command that switches ImGui input mode.
|
* @returns True, if this key is bound to 'ImGui.ToggleInput' command that switches ImGui input mode.
|
||||||
*/
|
*/
|
||||||
bool IsSwitchInputModeEvent(const FKeyEvent& KeyEvent) const;
|
bool IsToggleInputEvent(const FKeyEvent& KeyEvent) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether corresponding ImGui context has an active item (holding cursor focus).
|
* Checks whether corresponding ImGui context has an active item (holding cursor focus).
|
||||||
|
Loading…
Reference in New Issue
Block a user