#pragma once
#include "CoreMinimal.h"
#include "Engine/EngineTypes.h"
#include "PhysicsEngine/PhysicsCollisionHandler.h"
#include "MyPhysicsCollisionHandler.generated.h"
USTRUCT(BlueprintType)
struct FMyRigidBodyContactInfo
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
FVector ContactPosition;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
FVector ContactNormal;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
float ContactPenetration;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
class UPhysicalMaterial* PhysMaterial0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
class UPhysicalMaterial* PhysMaterial1;
};
USTRUCT(BlueprintType)
struct FMyCollisionImpactData
{
GENERATED_BODY()
/** all the contact points in the collision*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
TArray<FMyRigidBodyContactInfo> ContactInfos;
/** the total impulse applied as the two objects push against each other*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
FVector TotalNormalImpulse;
/** the total counterimpulse applied of the two objects sliding against each other*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = PhysicsCollisionHandlerTest)
FVector TotalFrictionImpulse;
};
UCLASS()
class BLOGTEST421_API UMyPhysicsCollisionHandler : public UPhysicsCollisionHandler
{
GENERATED_BODY()
public:
/** Gives game-specific ability to handle and filter all physics collisions in one place. This is a good place to play sounds and spawn effects, as it does not require special object-specific code. */
virtual void HandlePhysicsCollisions_AssumesLocked(TArray<FCollisionNotifyInfo>& PendingCollisionNotifies) override;
UFUNCTION(BlueprintImplementableEvent, Category = PhysicsCollisionHandlerTest)
void HandlePhysicsCollisionPair(class AActor* actor0, class AActor* actor1, FMyCollisionImpactData contactInfo);
};