mirror of
https://github.com/Ed94/Cog.git
synced 2026-06-13 08:02:23 -07:00
CogInput: Add multiple IMC on the input data asset. Maybe propose a current imc
This commit is contained in:
@@ -20,6 +20,12 @@ void UCogInputWindow_Actions::RenderHelp()
|
||||
);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
void UCogInputWindow_Actions::ResetConfig()
|
||||
{
|
||||
RepeatPeriod = 0.5f;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
UCogInputWindow_Actions::UCogInputWindow_Actions()
|
||||
{
|
||||
@@ -39,12 +45,6 @@ void UCogInputWindow_Actions::RenderContent()
|
||||
return;
|
||||
}
|
||||
|
||||
if (Asset->MappingContext == nullptr)
|
||||
{
|
||||
ImGui::Text("No MappingContext");
|
||||
return;
|
||||
}
|
||||
|
||||
ULocalPlayer* LocalPlayer = GetWorld()->GetFirstLocalPlayerFromController();
|
||||
if (LocalPlayer == nullptr)
|
||||
{
|
||||
@@ -80,14 +80,22 @@ void UCogInputWindow_Actions::RenderContent()
|
||||
|
||||
if (Actions.Num() == 0)
|
||||
{
|
||||
for (const FEnhancedActionKeyMapping& Mapping : Asset->MappingContext->GetMappings())
|
||||
for (TObjectPtr<const UInputMappingContext> MappingContext : Asset->MappingContexts)
|
||||
{
|
||||
if (Mapping.Action != nullptr && Actions.ContainsByPredicate([&Mapping](const FCogInjectActionInfo& ActionInfo) { return Mapping.Action == ActionInfo.Action; }) == false)
|
||||
for (const FEnhancedActionKeyMapping& Mapping : MappingContext->GetMappings())
|
||||
{
|
||||
FCogInjectActionInfo& ActionInfo = Actions.AddDefaulted_GetRef();
|
||||
ActionInfo.Action = Mapping.Action;
|
||||
if (Mapping.Action != nullptr && Actions.ContainsByPredicate([&Mapping](const FCogInjectActionInfo& ActionInfo) { return Mapping.Action == ActionInfo.Action; }) == false)
|
||||
{
|
||||
FCogInjectActionInfo& ActionInfo = Actions.AddDefaulted_GetRef();
|
||||
ActionInfo.Action = Mapping.Action;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Actions.Sort([](const FCogInjectActionInfo& Lhs, const FCogInjectActionInfo& Rhs)
|
||||
{
|
||||
return GetNameSafe(Lhs.Action).Compare(GetNameSafe(Rhs.Action)) < 0;
|
||||
});
|
||||
}
|
||||
|
||||
if (ImGui::BeginTable("Actions", 3, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Resizable | ImGuiTableFlags_NoBordersInBodyUntilResize))
|
||||
|
||||
@@ -62,7 +62,7 @@ void UCogInputWindow_Gamepad::InputContextMenu(const FKey& Key, FCogInjectAction
|
||||
|
||||
if (ActionInfoButton != nullptr && ActionInfoButton->Action != nullptr && ActionInfoButton->Action->ValueType == EInputActionValueType::Axis1D)
|
||||
{
|
||||
FCogWindowWidgets::SliderWithReset("X", &ActionInfo2D->X, -1.0f, 1.0f, 0.0f, "%0.2f");
|
||||
FCogWindowWidgets::SliderWithReset("X", &ActionInfoButton->X, -1.0f, 1.0f, 0.0f, "%0.2f");
|
||||
}
|
||||
|
||||
if (ActionInfo2D != nullptr)
|
||||
@@ -236,7 +236,11 @@ void UCogInputWindow_Gamepad::RenderContent()
|
||||
return;
|
||||
}
|
||||
|
||||
if (Asset != nullptr && Asset->MappingContext != nullptr)
|
||||
if (Asset == nullptr)
|
||||
{
|
||||
ImGui::Text("No Input Asset");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Actions.Num() == 0)
|
||||
{
|
||||
@@ -267,20 +271,20 @@ void UCogInputWindow_Gamepad::RenderContent()
|
||||
Actions.FindOrAdd(EKeys:: Gamepad_DPad_Right);
|
||||
Actions.FindOrAdd(EKeys:: Gamepad_DPad_Left);
|
||||
|
||||
for (const FEnhancedActionKeyMapping& Mapping : Asset->MappingContext->GetMappings())
|
||||
for (TObjectPtr<const UInputMappingContext> MappingContext : Asset->MappingContexts)
|
||||
{
|
||||
if (Mapping.Action != nullptr)
|
||||
for (const FEnhancedActionKeyMapping& Mapping : MappingContext->GetMappings())
|
||||
{
|
||||
FCogInjectActionInfo& ActionInfo = Actions.FindOrAdd(Mapping.Key);
|
||||
ActionInfo.Action = Mapping.Action;
|
||||
if (Mapping.Action != nullptr)
|
||||
{
|
||||
FCogInjectActionInfo& ActionInfo = Actions.FindOrAdd(Mapping.Key);
|
||||
ActionInfo.Action = Mapping.Action;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui::Text("No Action Asset");
|
||||
}
|
||||
|
||||
|
||||
const float AspectRatio = 0.55f;
|
||||
const float StickAmplitude = 0.04f;
|
||||
@@ -311,7 +315,7 @@ void UCogInputWindow_Gamepad::RenderContent()
|
||||
|
||||
DrawList = ImGui::GetWindowDrawList();
|
||||
ImGui::Dummy(bShowAsOverlay ? CanvasMax - CanvasMin : ContentSize);
|
||||
if (ImGui::BeginPopupContextItem())
|
||||
if (ImGui::BeginPopupContextItem("Gamepad"))
|
||||
{
|
||||
if (ImGui::Button("Close", ImVec2(-1.0f, 0)))
|
||||
{
|
||||
|
||||
@@ -15,5 +15,5 @@ public:
|
||||
UCogInputDataAsset() {}
|
||||
|
||||
UPROPERTY(EditAnywhere)
|
||||
TObjectPtr<const UInputMappingContext> MappingContext;
|
||||
TArray<TObjectPtr<const UInputMappingContext>> MappingContexts;
|
||||
};
|
||||
|
||||
@@ -19,7 +19,9 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
void RenderHelp();
|
||||
virtual void ResetConfig() override;
|
||||
|
||||
virtual void RenderHelp() override;
|
||||
|
||||
virtual void RenderContent() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user