第一次提交
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "MoverTypes.h"
|
||||
#include "GMS_MoverStructLibrary.generated.h"
|
||||
|
||||
/**
|
||||
* Data block containing extended movement actions inputs used by Generic Movement System.
|
||||
* 包含GMS所用到的运动行为输入定义的数据块。
|
||||
*/
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_MoverActionInputs : public FMoverDataStructBase
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
bool bIsDashJustPressed = false;
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
bool bIsAimPressed = false;
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
bool bIsVaultJustPressed = false;
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
bool bWantsToStartZiplining = false;
|
||||
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
bool bWantsToBeCrouched = false;
|
||||
|
||||
// @return newly allocated copy of this FGMS_MoverActionInputs. Must be overridden by child classes
|
||||
virtual FMoverDataStructBase* Clone() const override
|
||||
{
|
||||
// TODO: ensure that this memory allocation jives with deletion method
|
||||
FGMS_MoverActionInputs* CopyPtr = new FGMS_MoverActionInputs(*this);
|
||||
return CopyPtr;
|
||||
}
|
||||
|
||||
virtual bool NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess) override
|
||||
{
|
||||
Super::NetSerialize(Ar, Map, bOutSuccess);
|
||||
|
||||
Ar.SerializeBits(&bIsDashJustPressed, 1);
|
||||
Ar.SerializeBits(&bIsAimPressed, 1);
|
||||
Ar.SerializeBits(&bIsVaultJustPressed, 1);
|
||||
Ar.SerializeBits(&bWantsToStartZiplining, 1);
|
||||
Ar.SerializeBits(&bWantsToBeCrouched, 1);
|
||||
|
||||
bOutSuccess = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual UScriptStruct* GetScriptStruct() const override { return StaticStruct(); }
|
||||
|
||||
virtual void ToString(FAnsiStringBuilderBase& Out) const override
|
||||
{
|
||||
Super::ToString(Out);
|
||||
Out.Appendf("bIsDashJustPressed: %i\n", bIsDashJustPressed);
|
||||
Out.Appendf("bIsAimPressed: %i\n", bIsAimPressed);
|
||||
Out.Appendf("bIsVaultJustPressed: %i\n", bIsVaultJustPressed);
|
||||
Out.Appendf("bWantsToStartZiplining: %i\n", bWantsToStartZiplining);
|
||||
Out.Appendf("bWantsToBeCrouched: %i\n", bWantsToBeCrouched);
|
||||
}
|
||||
|
||||
virtual void AddReferencedObjects(FReferenceCollector& Collector) override { Super::AddReferencedObjects(Collector); }
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_MoverTagInputs : public FMoverDataStructBase
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
/**
|
||||
* A container which you can query tag to indicate a input is requested.
|
||||
*/
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
FGameplayTagContainer Tags;
|
||||
|
||||
// @return newly allocated copy of this FGMS_MoverActionInputs. Must be overridden by child classes
|
||||
virtual FMoverDataStructBase* Clone() const override
|
||||
{
|
||||
// TODO: ensure that this memory allocation jives with deletion method
|
||||
FGMS_MoverTagInputs* CopyPtr = new FGMS_MoverTagInputs(*this);
|
||||
return CopyPtr;
|
||||
}
|
||||
|
||||
virtual bool NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess) override
|
||||
{
|
||||
bool bSuccess = Super::NetSerialize(Ar, Map, bOutSuccess);
|
||||
|
||||
Tags.NetSerialize(Ar, Map, bSuccess);
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
virtual UScriptStruct* GetScriptStruct() const override { return StaticStruct(); }
|
||||
|
||||
virtual void ToString(FAnsiStringBuilderBase& Out) const override
|
||||
{
|
||||
Super::ToString(Out);
|
||||
Out.Appendf("MoverTagInputs Tags[%s] \n", *Tags.ToString());
|
||||
}
|
||||
|
||||
virtual void AddReferencedObjects(FReferenceCollector& Collector) override { Super::AddReferencedObjects(Collector); }
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct GENERICMOVEMENTSYSTEM_API FGMS_MoverMovementControlInputs : public FMoverDataStructBase
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
/**
|
||||
* 当前是什么运动集?影响角色动画表现方式。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
FGameplayTag DesiredMovementSet;
|
||||
|
||||
/**
|
||||
* 想以什么状态移动?影响角色移动参数
|
||||
*/
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
FGameplayTag DesiredMovementState;
|
||||
|
||||
/**
|
||||
* 想以什么方式旋转?影响角色的朝向方式。
|
||||
*/
|
||||
UPROPERTY(BlueprintReadWrite, Category = Mover)
|
||||
FGameplayTag DesiredRotationMode;
|
||||
|
||||
// @return newly allocated copy of this FGMS_MoverActionInputs. Must be overridden by child classes
|
||||
virtual FMoverDataStructBase* Clone() const override
|
||||
{
|
||||
// TODO: ensure that this memory allocation jives with deletion method
|
||||
FGMS_MoverMovementControlInputs* CopyPtr = new FGMS_MoverMovementControlInputs(*this);
|
||||
return CopyPtr;
|
||||
}
|
||||
|
||||
virtual bool NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess) override
|
||||
{
|
||||
bool bSuccess = Super::NetSerialize(Ar, Map, bOutSuccess);
|
||||
DesiredMovementSet.NetSerialize(Ar, Map, bSuccess);
|
||||
DesiredMovementState.NetSerialize(Ar, Map, bSuccess);
|
||||
DesiredRotationMode.NetSerialize(Ar, Map, bSuccess);
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
virtual UScriptStruct* GetScriptStruct() const override { return StaticStruct(); }
|
||||
|
||||
virtual void ToString(FAnsiStringBuilderBase& Out) const override
|
||||
{
|
||||
Super::ToString(Out);
|
||||
Out.Appendf("DesiredMovementSet [%s] \n", *DesiredMovementSet.ToString());
|
||||
Out.Appendf("DesiredMovementState [%s] \n", *DesiredMovementState.ToString());
|
||||
Out.Appendf("DesiredRotationMode [%s] \n", *DesiredRotationMode.ToString());
|
||||
}
|
||||
|
||||
virtual void AddReferencedObjects(FReferenceCollector& Collector) override { Super::AddReferencedObjects(Collector); }
|
||||
};
|
||||
Reference in New Issue
Block a user