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

A picture is enough to understand the meaning.

Hi there @darkflash007 !!

I just tested and I do not have the crash you are experiencing, please see this pic:

Please try using my raw file:

  1. Load into Unreal Engine 5 EA
  2. Change to vector displacement map as you also showed in your own pic
  3. Create the node set up like you see I have
  4. You should get Blue as the color!

Please try the above and let me know what happens, with this file:

image

:heart:

Rama

Sorry a wildcard switch case is a bit beyond my realm, why do you need such a thing?

I’ve never had a need for what you are describing, so I’d like to understand the larger context, and understand why a wildcard switch case is the solution you are in need of.

  1. Are you trying to handle multiple different data types in one switch case,

  2. or are you just not wanting to have to pick the specific switch case manually, and have the wild card pin do it for you?

  3. something else?

:heart:

Rama

Thank Rama for victory plugin, very useful! Is possible to add runtime transform function(move,rotate scale)?

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