Files
UnrealEngineUWP/Engine/Source/Editor/PhysicsAssetEditor/Private/PhysicsAssetEditorAnimInstanceProxy.h
chris caulfield 1010d59e0e Chaos
- RBAN QPBD and linear joint solver support
- Add 3rd phase to solver loop for projection
- Add settings for QPBD to PhysicsAsset
- Add cvar overrides for all settings
- Hide settings for legacy solver

#rb michael.forot
#jira UE-140717
#preflight

#ROBOMERGE-AUTHOR: chris.caulfield
#ROBOMERGE-SOURCE: CL 19156094 in //UE5/Release-5.0/... via CL 19159784
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19161460 by chris caulfield in ue5-main branch]
2022-02-25 19:46:14 -05:00

58 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "AnimPreviewInstance.h"
#include "Animation/AnimNode_LinkedInputPose.h"
#include "Animation/AnimNode_SequencePlayer.h"
#include "Animation/AnimNodeSpaceConversions.h"
#include "BoneControllers/AnimNode_RigidBody.h"
#include "Physics/ImmediatePhysics/ImmediatePhysicsDeclares.h"
#include "PhysicsAssetEditorAnimInstanceProxy.generated.h"
class UAnimSequence;
/** Proxy override for this UAnimInstance-derived class */
USTRUCT()
struct FPhysicsAssetEditorAnimInstanceProxy : public FAnimPreviewInstanceProxy
{
GENERATED_BODY()
public:
FPhysicsAssetEditorAnimInstanceProxy();
FPhysicsAssetEditorAnimInstanceProxy(UAnimInstance* InAnimInstance);
virtual ~FPhysicsAssetEditorAnimInstanceProxy();
virtual void Initialize(UAnimInstance* InAnimInstance) override;
virtual FAnimNode_Base* GetCustomRootNode() override;
virtual void GetCustomNodes(TArray<FAnimNode_Base*>& OutNodes) override;
virtual void UpdateAnimationNode(const FAnimationUpdateContext& InContext) override;
virtual bool Evaluate_WithRoot(FPoseContext& Output, FAnimNode_Base* InRootNode) override;
virtual void AddImpulseAtLocation(FVector Impulse, FVector Location, FName BoneName = NAME_None) override;
virtual void Grab(FName InBoneName, const FVector& Location, const FRotator& Rotation, bool bRotationConstrained);
virtual void Ungrab();
virtual void UpdateHandleTransform(const FTransform& NewTransform);
virtual void UpdateDriveSettings(bool bLinearSoft, float LinearStiffness, float LinearDamping);
virtual void CreateSimulationFloor(FBodyInstance* FloorBodyInstance, const FTransform& Transform);
virtual void DestroySimulationFloor();
private:
void ConstructNodes();
FAnimNode_RigidBody RagdollNode;
FAnimNode_ConvertComponentToLocalSpace ComponentToLocalSpace;
FPhysicsAssetSolverSettings SolverSettings;
FSolverIterations SolverIterations;
ImmediatePhysics::FActorHandle* TargetActor;
ImmediatePhysics::FActorHandle* HandleActor;
ImmediatePhysics::FJointHandle* HandleJoint;
ImmediatePhysics::FActorHandle* FloorActor;
};