Files
UnrealEngine/Engine/Source/Runtime/Experimental/ChaosSolverEngine/Private/Chaos/ChaosNotifyHandlerInterface.cpp
2025-05-18 13:04:45 +08:00

54 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Chaos/ChaosNotifyHandlerInterface.h"
#include "Components/PrimitiveComponent.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(ChaosNotifyHandlerInterface)
UChaosNotifyHandlerInterface::UChaosNotifyHandlerInterface(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
void IChaosNotifyHandlerInterface::HandlePhysicsCollision(const FChaosPhysicsCollisionInfo& CollisionInfo)
{
// native
NotifyPhysicsCollision(CollisionInfo);
// bp
DispatchChaosPhysicsCollisionBlueprintEvents(CollisionInfo);
}
FHitResult UChaosSolverEngineBlueprintLibrary::ConvertPhysicsCollisionToHitResult(const FChaosPhysicsCollisionInfo& PhysicsCollision)
{
FHitResult Hit(0.f);
Hit.Component = PhysicsCollision.OtherComponent;
Hit.HitObjectHandle = FActorInstanceHandle(Hit.Component.IsValid() ? Hit.Component->GetOwner() : nullptr);
Hit.bBlockingHit = true;
Hit.Normal = PhysicsCollision.Normal;
Hit.ImpactNormal = PhysicsCollision.Normal;
Hit.Location = PhysicsCollision.Location;
Hit.ImpactPoint = PhysicsCollision.Location;
//Hit.PhysMaterial =
return Hit;
}
FChaosPhysicsCollisionInfo::FChaosPhysicsCollisionInfo()
: Component(nullptr)
, OtherComponent(nullptr)
, Location(FVector::ZeroVector)
, Normal(FVector::ZeroVector)
, AccumulatedImpulse(FVector::ZeroVector)
, Velocity(FVector::ZeroVector)
, OtherVelocity(FVector::ZeroVector)
, AngularVelocity(FVector::ZeroVector)
, OtherAngularVelocity(FVector::ZeroVector)
, Mass(0.0f)
, OtherMass(0.0f)
{
}