Add readable MVP survival object proxies

This commit is contained in:
2026-05-19 10:42:06 -07:00
parent bc7617b08b
commit 63f48bcadf
15 changed files with 623 additions and 1 deletions
@@ -4,11 +4,37 @@
#include "AgrarianGameCharacter.h"
#include "AgrarianInventoryComponent.h"
#include "AIController.h"
#include "Components/StaticMeshComponent.h"
#include "Engine/StaticMesh.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "Kismet/GameplayStatics.h"
#include "Materials/MaterialInterface.h"
#include "Navigation/PathFollowingComponent.h"
#include "NavigationSystem.h"
#include "Net/UnrealNetwork.h"
#include "UObject/ConstructorHelpers.h"
namespace
{
void ConfigureWildlifeProxyComponent(UStaticMeshComponent* Component, UStaticMesh* MeshAsset, UMaterialInterface* MaterialAsset)
{
if (!Component)
{
return;
}
Component->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Component->SetGenerateOverlapEvents(false);
if (MeshAsset)
{
Component->SetStaticMesh(MeshAsset);
}
if (MaterialAsset)
{
Component->SetMaterial(0, MaterialAsset);
}
}
}
AAgrarianWildlifeBase::AAgrarianWildlifeBase()
{
@@ -22,6 +48,44 @@ AAgrarianWildlifeBase::AAgrarianWildlifeBase()
GetCharacterMovement()->bOrientRotationToMovement = true;
bUseControllerRotationYaw = false;
static ConstructorHelpers::FObjectFinder<UStaticMesh> ChamferCubeMesh(TEXT("/Game/Agrarian/Environment/PlaceholderMeshes/SM_AGR_Placeholder_ChamferCube.SM_AGR_Placeholder_ChamferCube"));
static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeMesh(TEXT("/Game/Agrarian/Environment/PlaceholderMeshes/SM_AGR_Placeholder_Cube.SM_AGR_Placeholder_Cube"));
static ConstructorHelpers::FObjectFinder<UStaticMesh> CylinderMesh(TEXT("/Game/Agrarian/Environment/PlaceholderMeshes/SM_AGR_Placeholder_Cylinder.SM_AGR_Placeholder_Cylinder"));
static ConstructorHelpers::FObjectFinder<UMaterialInterface> FurMaterial(TEXT("/Game/Agrarian/Materials/M_AGR_GZ_Fiber_Resource.M_AGR_GZ_Fiber_Resource"));
WildlifeBodyProxy = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WildlifeBodyProxy"));
WildlifeBodyProxy->SetupAttachment(RootComponent);
ConfigureWildlifeProxyComponent(WildlifeBodyProxy, ChamferCubeMesh.Succeeded() ? ChamferCubeMesh.Object : nullptr, FurMaterial.Succeeded() ? FurMaterial.Object : nullptr);
WildlifeBodyProxy->SetRelativeLocation(FVector(10.0f, 0.0f, -42.0f));
WildlifeBodyProxy->SetRelativeScale3D(FVector(0.62f, 0.32f, 0.24f));
WildlifeHeadProxy = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WildlifeHeadProxy"));
WildlifeHeadProxy->SetupAttachment(WildlifeBodyProxy);
ConfigureWildlifeProxyComponent(WildlifeHeadProxy, ChamferCubeMesh.Succeeded() ? ChamferCubeMesh.Object : nullptr, FurMaterial.Succeeded() ? FurMaterial.Object : nullptr);
WildlifeHeadProxy->SetRelativeLocation(FVector(42.0f, 0.0f, 20.0f));
WildlifeHeadProxy->SetRelativeScale3D(FVector(0.46f, 0.34f, 0.36f));
WildlifeEarProxyA = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WildlifeEarProxyA"));
WildlifeEarProxyA->SetupAttachment(WildlifeHeadProxy);
ConfigureWildlifeProxyComponent(WildlifeEarProxyA, CubeMesh.Succeeded() ? CubeMesh.Object : nullptr, FurMaterial.Succeeded() ? FurMaterial.Object : nullptr);
WildlifeEarProxyA->SetRelativeLocation(FVector(4.0f, -12.0f, 28.0f));
WildlifeEarProxyA->SetRelativeRotation(FRotator(0.0f, 0.0f, -10.0f));
WildlifeEarProxyA->SetRelativeScale3D(FVector(0.08f, 0.08f, 0.38f));
WildlifeEarProxyB = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WildlifeEarProxyB"));
WildlifeEarProxyB->SetupAttachment(WildlifeHeadProxy);
ConfigureWildlifeProxyComponent(WildlifeEarProxyB, CubeMesh.Succeeded() ? CubeMesh.Object : nullptr, FurMaterial.Succeeded() ? FurMaterial.Object : nullptr);
WildlifeEarProxyB->SetRelativeLocation(FVector(4.0f, 12.0f, 28.0f));
WildlifeEarProxyB->SetRelativeRotation(FRotator(0.0f, 0.0f, 10.0f));
WildlifeEarProxyB->SetRelativeScale3D(FVector(0.08f, 0.08f, 0.38f));
WildlifeTailProxy = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WildlifeTailProxy"));
WildlifeTailProxy->SetupAttachment(WildlifeBodyProxy);
ConfigureWildlifeProxyComponent(WildlifeTailProxy, CylinderMesh.Succeeded() ? CylinderMesh.Object : nullptr, FurMaterial.Succeeded() ? FurMaterial.Object : nullptr);
WildlifeTailProxy->SetRelativeLocation(FVector(-42.0f, 0.0f, 10.0f));
WildlifeTailProxy->SetRelativeRotation(FRotator(0.0f, 90.0f, 90.0f));
WildlifeTailProxy->SetRelativeScale3D(FVector(0.12f, 0.12f, 0.24f));
DisplayName = FText::FromString(TEXT("Wildlife"));
}