Salty.uproject (UE 5.8) from the Third Person template with class redirects, the SaltyCore and Salty modules, the three build targets, USaltyAssetManager calling InitGlobalData, Config/Tags with the 23 root namespaces, Scripts/run-tests.sh, build.sh and Authoring/create_gym.py, L_Gym, Git LFS attributes and the placeholder test. Template variants kept as reference (D-41). The four Fab packs stay out of the repository for now (~10 GB). The editor serves the engine MCP plugin on 127.0.0.1:8000 through DefaultEditorPerProjectUserSettings.ini. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
#include "CombatDummy.h"
|
|
#include "Components/SceneComponent.h"
|
|
#include "Components/StaticMeshComponent.h"
|
|
#include "PhysicsEngine/PhysicsConstraintComponent.h"
|
|
|
|
ACombatDummy::ACombatDummy()
|
|
{
|
|
PrimaryActorTick.bCanEverTick = true;
|
|
|
|
// create the root
|
|
Root = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
|
|
SetRootComponent(Root);
|
|
|
|
// create the base plate
|
|
BasePlate = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Base Plate"));
|
|
BasePlate->SetupAttachment(RootComponent);
|
|
|
|
// create the dummy
|
|
Dummy = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Dummy"));
|
|
Dummy->SetupAttachment(RootComponent);
|
|
|
|
Dummy->SetSimulatePhysics(true);
|
|
|
|
// create the physics constraint
|
|
PhysicsConstraint = CreateDefaultSubobject<UPhysicsConstraintComponent>(TEXT("Physics Constraint"));
|
|
PhysicsConstraint->SetupAttachment(RootComponent);
|
|
|
|
PhysicsConstraint->SetConstrainedComponents(BasePlate, NAME_None, Dummy, NAME_None);
|
|
}
|
|
|
|
void ACombatDummy::ApplyDamage(float Damage, AActor* DamageCauser, const FVector& DamageLocation, const FVector& DamageImpulse)
|
|
{
|
|
// apply impulse to the dummy
|
|
Dummy->AddImpulseAtLocation(DamageImpulse, DamageLocation);
|
|
|
|
// call the BP handler
|
|
BP_OnDummyDamaged(DamageLocation, DamageImpulse.GetSafeNormal());
|
|
}
|
|
|
|
void ACombatDummy::HandleDeath()
|
|
{
|
|
// unused
|
|
}
|
|
|
|
void ACombatDummy::ApplyHealing(float Healing, AActor* Healer)
|
|
{
|
|
// unused
|
|
}
|
|
|
|
void ACombatDummy::NotifyDanger(const FVector& DangerLocation, AActor* DangerSource)
|
|
{
|
|
// unused
|
|
}
|