回退至简易刀光实现
刀光扭曲视觉表现不佳,笔直的刀光可能视觉感受更好,先不让材质扭曲,后续如果还需要实现扭曲效果,可以在这个版本的基础上继续研究
This commit is contained in:
@ -4,6 +4,8 @@
|
||||
#include "Core/PW_UserWidget.h"
|
||||
#include "Core/UI/PW_UIHud.h"
|
||||
#include "slua.h"
|
||||
#include "EnhancedInput/Public/EnhancedInputSubsystems.h"
|
||||
#include "EnhancedInput/Public/EnhancedInputComponent.h"
|
||||
|
||||
UPW_SimpleWidget::UPW_SimpleWidget():bVisible(true){
|
||||
bVisible = true;
|
||||
@ -36,7 +38,6 @@ FLuaWidgetEventHandle UPW_SimpleWidget::BP_BindLuaEvent(const FName& EventName,
|
||||
TMap<int32, slua::LuaVar>& FunctionPool = LuaFuncMappings.FindOrAdd(EventName);
|
||||
HandleIndex += 1;
|
||||
FunctionPool.Add(HandleIndex, InLuaFunction.value);
|
||||
//FunctionPool[HandleIndex] = InLuaFunction.value;
|
||||
Handle.EventName = EventName;
|
||||
Handle.HandleIndex = HandleIndex;
|
||||
return Handle;
|
||||
@ -65,29 +66,22 @@ void UPW_SimpleWidget::BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar&
|
||||
}
|
||||
}
|
||||
|
||||
FReply UPW_SimpleWidget::NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent){
|
||||
slua::LuaVar SelfTable = GetSelfTable();
|
||||
if (SelfTable.isTable()) {
|
||||
slua::LuaVar LuaCallback = SelfTable.getFromTable<slua::LuaVar, FString>(TEXT("LuaMouseButtonDown"));
|
||||
if (LuaCallback.isFunction()) {
|
||||
LuaCallback.call();
|
||||
}
|
||||
}
|
||||
return FReply::Unhandled();
|
||||
//return Super::NativeOnMouseButtonDown(InGeometry, InMouseEvent);
|
||||
void UPW_SimpleWidget::BP_BindLuaEnhancedInput(UInputAction* Action, FLuaBPVar Callback) {
|
||||
UEnhancedInputComponent* EnhancedInput;
|
||||
if (!Action) return;
|
||||
|
||||
EnhancedInput = CastChecked<UEnhancedInputComponent>(GetOwningPlayer()->InputComponent);
|
||||
if (!EnhancedInput) return;
|
||||
|
||||
EnhancedInput->BindActionInstanceLambda(Action, ETriggerEvent::Triggered, [Callback](const FInputActionInstance& ActionInstance) {
|
||||
slua::LuaVar LuaCallback = Callback.value;
|
||||
if (!LuaCallback.isFunction()) return;
|
||||
LuaCallback.call();
|
||||
});
|
||||
}
|
||||
|
||||
FReply UPW_SimpleWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent){
|
||||
slua::LuaVar SelfTable = GetSelfTable();
|
||||
if (SelfTable.isTable()) {
|
||||
slua::LuaVar LuaCallback = SelfTable.getFromTable<slua::LuaVar, FString>(TEXT("LuaMouseButtonUp"));
|
||||
if (LuaCallback.isFunction()) {
|
||||
LuaCallback.call();
|
||||
}
|
||||
}
|
||||
return FReply::Unhandled();
|
||||
//return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void UPW_UserWidget::BP_Close(){
|
||||
APW_UIHud* Hud = Cast<APW_UIHud>(GetPlayerContext().GetHUD());
|
||||
@ -105,12 +99,33 @@ void UPW_UserWidget::FrameWorkSetVisible(bool InVisible){
|
||||
_RefreshVisible();
|
||||
}
|
||||
|
||||
void UPW_UserWidget::_UpdateInputState(bool bNeedRegister) {
|
||||
APlayerController* PC;
|
||||
UEnhancedInputLocalPlayerSubsystem* Subsystem;
|
||||
|
||||
if (!InputMappingContext) return;
|
||||
|
||||
PC = GetOwningPlayer();
|
||||
if (!PC) return;
|
||||
|
||||
Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer());
|
||||
if (!Subsystem) return;
|
||||
|
||||
if (bNeedRegister) {
|
||||
Subsystem->AddMappingContext(InputMappingContext, 0);
|
||||
}
|
||||
else {
|
||||
Subsystem->RemoveMappingContext(InputMappingContext);
|
||||
}
|
||||
}
|
||||
|
||||
void UPW_UserWidget::_RefreshVisible(){
|
||||
bool FinalVisible = bFrameWorkVisible && bVisible;
|
||||
if (FinalVisible) {
|
||||
bool bFinalVisible = bFrameWorkVisible && bVisible;
|
||||
if (bFinalVisible) {
|
||||
SetVisibility(ESlateVisibility::SelfHitTestInvisible);
|
||||
}
|
||||
else {
|
||||
SetVisibility(ESlateVisibility::Collapsed);
|
||||
}
|
||||
_UpdateInputState(bFinalVisible);
|
||||
}
|
||||
|
||||
@ -65,6 +65,7 @@ void UPW_UILayer::PopWidget(const UPW_UserWidget* WidgetInst){
|
||||
}
|
||||
}
|
||||
for (i = 0; i < NeedRemoveWidgets.Num(); ++i) {
|
||||
NeedRemoveWidgets[i]->FrameWorkSetVisible(false);
|
||||
NeedRemoveWidgets[i]->RemoveFromParent();
|
||||
}
|
||||
if (NeedShowWidget) {
|
||||
|
||||
@ -51,10 +51,8 @@ public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void BP_EmitLuaEvent(const FName& EventName, const FLuaBPVar& InLuaArgs);
|
||||
|
||||
public:
|
||||
virtual FReply NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)override;
|
||||
|
||||
virtual FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)override;
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void BP_BindLuaEnhancedInput(class UInputAction* Action, FLuaBPVar Callback);
|
||||
|
||||
|
||||
public:
|
||||
@ -73,8 +71,7 @@ protected: // lua相关
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class BUSYRABBIT_API UPW_UserWidget : public UPW_SimpleWidget
|
||||
{
|
||||
class BUSYRABBIT_API UPW_UserWidget : public UPW_SimpleWidget{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, DisplayName="是否全局唯一")
|
||||
@ -84,6 +81,9 @@ public:
|
||||
UPROPERTY(BlueprintReadOnly, EditDefaultsOnly)
|
||||
EWidgetLayoutType LayoutType;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category = "Input")
|
||||
TObjectPtr<class UInputMappingContext> InputMappingContext;
|
||||
|
||||
public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void BP_Close();
|
||||
@ -95,6 +95,8 @@ public:
|
||||
void FrameWorkSetVisible(bool InVisible);
|
||||
|
||||
protected:
|
||||
void _UpdateInputState(bool bNeedRegister);
|
||||
|
||||
void _RefreshVisible();
|
||||
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user