🌞 Victory Plugin ~ Rama's Extra Blueprint Nodes for UE5, No C++ Required!

SwitchByte will take less memory than SwitchInt
(SwitchWildcard This is already a show off)

this function should be in Ue4

// Переназначить поведение навигации получив виджет для курсора
UFUNCTION(Category="IVS|Set", BlueprintCallable, BlueprintCosmetic, Meta=(DefaultToSelf="Widget")) static void EscapeNavigation(UWidget* Widget, EUINavigation Direction, UWidget*& R);


void UILbr::EscapeNavigation(UWidget * Widget, EUINavigation Direction, UWidget * & R) {
  FVector2D Position = Widget -> GetCachedWidget() -> GetPaintSpaceGeometry().GetAbsolutePosition(), NewPosition, OldPosition;
  FVector2D Size = Widget -> GetCachedWidget() -> GetPaintSpaceGeometry().GetAbsoluteSize(), NewSize, OldSize;
  TSharedPtr < SWidget > C;
  UWorld *
    const World = GEngine -> GetWorldFromContextObject(Widget, EGetWorldErrorMode::ReturnNull);
  if (!World) {
    return;
  }
  bool expr = false;
  auto F {
    [](UWidget * R, float NewP, float OldP, float New, float Old, float Pos, bool & expr) {
      if (expr && IsValid(R)) {
        expr = NewP > OldP || (NewP == OldP && abs(New - Pos) < abs(Old - Pos));
      }
    }
  };
  for (TObjectIterator < UWidget > Itr; Itr; ++Itr) {
    if (Itr -> GetWorld() != World || * Itr == Widget) {
      continue;
    }
    // GetCachedWidget() получить ссылку. TakeWidget() получить ссылку, при неудаче создает SWidget
    C = Itr -> GetCachedWidget();
    if (C.IsValid() && C -> GetVisibility().IsVisible() && C -> SupportsKeyboardFocus()) {
      NewPosition = C -> GetPaintSpaceGeometry().GetAbsolutePosition();
      NewSize = C -> GetPaintSpaceGeometry().GetAbsoluteSize();
      //X длина. Y Высота. Отсчёт сверху слева. Элементы могут перекрываться так что Size не используем)IsInteractable
      switch (Direction) {
      case EUINavigation::Left:
        expr = NewPosition.X + NewSize.X <= Position.X;
        F(R, NewPosition.X + NewSize.X, OldPosition.X + OldSize.X, NewPosition.Y, OldPosition.Y, Position.Y, expr);
        break;
      case EUINavigation::Right:
        expr = NewPosition.X >= Position.X + Size.X;
        F(R, OldPosition.X + OldSize.X, NewPosition.X + NewSize.X, NewPosition.Y, OldPosition.Y, Position.Y, expr);
        break;
      case EUINavigation::Up:
        expr = NewPosition.Y + NewSize.Y <= Position.Y;
        F(R, NewPosition.Y + NewSize.Y, OldPosition.Y + OldSize.Y, NewPosition.X, OldPosition.X, Position.X, expr);
        break;
      case EUINavigation::Down:
        expr = NewPosition.Y >= Position.Y + Size.Y;
        F(R, OldPosition.Y + OldSize.Y, NewPosition.Y + NewSize.Y, NewPosition.X, OldPosition.X, Position.X, expr);
      }
      if (expr) {
        R = * Itr;
        OldPosition = NewPosition;
        OldSize = NewSize;
      }
    }
  }
}
2 Likes

I found out what’s causing the problem.
If “Mip Gen Setting” set to any value except “Nomipmaps”, “LeaveExistingMips” UE crashed.

1 Like

GetKeyboardLanguage

#if PLATFORM_WINDOWS
//#if PLATFORM_WINRT
//#endif
//#if PLATFORM_WINRT_ARM
//#endif
#include "Runtime/Core/Public/Windows/AllowWindowsPlatformTypes.h"
#endif
#if PLATFORM_LINUX
#include "XKeyboard.h"
#endif
#if PLATFORM_MAC
#include <Carbon/Carbon.h>
#endif
#if PLATFORM_PS4

#endif
#if PLATFORM_XBOXONE

#endif
#if PLATFORM_SWITCH

#endif
#if PLATFORM_ANDROID

#endif
#if PLATFORM_IOS

#endif
#if PLATFORM_TVOS

#endif
#if PLATFORM_DESKTOP

#endif
#if PLATFORM_LUMIN

#endif
#if PLATFORM_APPLE

#endif


FString UILbr::GetKeyboardLanguage(){
FString L=""; 
#if PLATFORM_WINDOWS
HKL kstate = GetKeyboardLayout(0);
TCHAR szCodePage[10];
if(GetLocaleInfo(LOWORD(kstate), LOCALE_SISO639LANGNAME, szCodePage, sizeof(szCodePage))){L=szCodePage;}
#endif
#if PLATFORM_LINUX
//L=FString(xkb.currentGroupName()); //return somethings like "USA"
L=FString(xkb.currentGroupSymbol()); //return somethings like "us"
#endif
#if PLATFORM_MAC
char layout[128];
memset(layout, '\0', sizeof(layout));
TISInputSourceRef source = TISCopyCurrentKeyboardInputSource();
// get input source id - kTISPropertyInputSourceID
// get layout name - kTISPropertyLocalizedName
CFStringRef layoutID = TISGetInputSourceProperty(source, kTISPropertyInputSourceID);
CFStringGetCString(layoutID, layout, sizeof(layout), kCFStringEncodingUTF8);
L=FString(layout);
#endif
#if PLATFORM_PS4

#endif
#if PLATFORM_XBOXONE

#endif
#if PLATFORM_SWITCH

#endif
#if PLATFORM_ANDROID

#endif
#if PLATFORM_IOS

#endif
#if PLATFORM_TVOS

#endif
#if PLATFORM_DESKTOP

#endif
#if PLATFORM_LUMIN

#endif
#if PLATFORM_APPLE

#endif
return L;
}

GetKeyboardText

Add please!

Welcome to the Community @yiya668800 !

If you are using Blueprints, are the functions not working as you expect for transform?

Oooooh

:sparkling_heart: Thank you for this intel! :sparkling_heart:

I am adding to UE5 node description!

:sparkling_heart:

Rama

Dear @Dreika ,

Thank you for these new additions!

Thank you for joining us from Russia!

May there be World Peace Now!

Спасибо за эти новые дополнения!

Спасибо, что присоединились к нам из России!

Да будет сейчас мир во всем мире!

thank you for the reply. I will check out.

Hey @Rama! Just wanted to give you a heads up that the “Append Multiple” node is broken in UE5 and seems to corrupt all project blueprints if one blueprint contains it.

The engine crashes with this error:

Assertion failed: NewOperatorInputA [File:D:\build\++UE5\Sync\Engine\Source\Editor\BlueprintGraph\Private\K2Node_CommutativeAssociativeBinaryOperator.cpp] [Line: 281] (the line is: check(NewOperatorInputA);

We switched back to the regular “Append” node, so not a problem, just an FYI :slight_smile:

Hey @Rama is the plugin going to be updated for preview or are you waiting for release?

I use “UE5 Preview” to open and encounter such a pop-up window

Thanks for letting me know!

Working on it now!

Yezzzzzzz

In process of updating to preview

:heart:

Rama

1 Like

:sparkling_heart: :sparkling_heart: :sparkling_heart:

1 Like

Victory Plugin is now on Unreal Engine 5 Release 1

(same link as in original post)

:heart:

Rama

Thanks :grinning: :grinning: :sparkling_heart:

1 Like

Does this work for release 2 of the unreal engine 5 ?

I migrated my project over to UE5 : Release 2 and am in desperate need of…

  • animation get aim offsets
  • accessor get player controller
  • get all asset user data of class

From the victory plugin if possible or a work around for these nodes would be great.
Thanks for all you do !

Thanks for letting me know, I will add these!

:heart:

Rama

Rama’s Full UE5 Project Foundation (1.1 GB+ Full Project!)

:zap: :rose: :sparkling_heart: Yes!!! :sparkling_heart: :rose: :zap:

:heart:

Rama

1 Like

Hallo,
bei mir erscheint mit dem neuen Plugin dass:
Bild3

und mit dem alten 27 fehlt dann Accessor Get Character Skeletal Mesh

oder mache ich etwas falsch?
Gruß

Rama! I love your VictoryBP plugin. Will you have a build for current official UE5.0.0 release :)?
It won’t compile on my end in the latest official release version.

same here Rama, trying to migrate to 5 but won’t re-build from launch and also been trying to compile it but no luck, can’t run my project without this so would love to get an idea when to expect an update so we can plan ahead