第一次提交

This commit is contained in:
不明不惑
2026-03-03 01:23:02 +08:00
commit 3e434877e8
1053 changed files with 102411 additions and 0 deletions

View File

@@ -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); }
};