第一次提交

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,128 @@
// Copyright 2025 https://yuewu.dev/en All Rights Reserved.
#include "Locomotions/GMS_AnimLayer.h"
#include "GameFramework/Pawn.h"
#include "GMS_MovementSystemComponent.h"
#include "Locomotions/GMS_MainAnimInstance.h"
#include "Misc/DataValidation.h"
#include "Settings/GMS_SettingObjectLibrary.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(GMS_AnimLayer)
bool UGMS_AnimLayerSetting::GetOverrideAnimLayerClass_Implementation(TSubclassOf<UGMS_AnimLayer>& OutLayerClass) const
{
return false;
}
bool UGMS_AnimLayerSetting::K2_IsDataValid_Implementation(FText& ErrorText) const
{
return true;
}
#if WITH_EDITOR
EDataValidationResult UGMS_AnimLayerSetting::IsDataValid(class FDataValidationContext& Context) const
{
FText ErrorText;
if (!IsTemplate() && !K2_IsDataValid(ErrorText))
{
Context.AddError(ErrorText);
return EDataValidationResult::Invalid;
}
return Super::IsDataValid(Context);
}
#endif
void UGMS_AnimLayer::OnLinked_Implementation()
{
// make sure to get reference to parent when linked.
if (!Parent.IsValid())
{
Parent = Cast<UGMS_MainAnimInstance>(GetSkelMeshComponent()->GetAnimInstance());
checkf(Parent!=nullptr, TEXT("Parent is not GMS_MainAnimInstance!"));
}
if (!PawnOwner)
{
PawnOwner = Cast<APawn>(GetOwningActor());
checkf(PawnOwner!=nullptr, TEXT("PawnOwner is not valid!"));
}
if (!MovementSystem)
{
MovementSystem = PawnOwner->FindComponentByClass<UGMS_MovementSystemComponent>();
checkf(MovementSystem!=nullptr, TEXT("Movement Sysytem Component is not valid!"));
}
if (!AnimStateNameToTagMapping.IsEmpty())
{
Parent->RegisterStateNameToTagMapping(this, AnimStateNameToTagMapping);
}
}
void UGMS_AnimLayer::OnUnlinked_Implementation()
{
if (Parent.IsValid())
{
if (!AnimStateNameToTagMapping.IsEmpty())
{
Parent->UnregisterStateNameToTagMapping(this);
}
Parent = nullptr;
}
}
UGMS_AnimLayer::UGMS_AnimLayer()
{
bUseMainInstanceMontageEvaluationData = true;
}
UGMS_MainAnimInstance* UGMS_AnimLayer::GetParent() const
{
return Parent.Get();
}
void UGMS_AnimLayer::ApplySetting_Implementation(const UGMS_AnimLayerSetting* Setting)
{
}
void UGMS_AnimLayer::ResetSetting_Implementation()
{
}
void UGMS_AnimLayer::NativeInitializeAnimation()
{
Super::NativeInitializeAnimation();
Parent = Cast<UGMS_MainAnimInstance>(GetSkelMeshComponent()->GetAnimInstance());
PawnOwner = Cast<APawn>(GetOwningActor());
#if WITH_EDITOR
if (!GetWorld()->IsGameWorld())
{
// Use default objects for editor preview.
if (!Parent.IsValid())
{
Parent = GetMutableDefault<UGMS_MainAnimInstance>();
}
if (!IsValid(PawnOwner))
{
PawnOwner = GetMutableDefault<APawn>();
}
}
#endif
}
void UGMS_AnimLayer::NativeBeginPlay()
{
Super::NativeBeginPlay();
ensure(PawnOwner);
MovementSystem = PawnOwner->FindComponentByClass<UGMS_MovementSystemComponent>();
}