Build fix - make some functions inline so they can be used elsewhere

#rb trivial
#preflight 647a01e3e75a2263919b0dc5

[CL 25764895 by danny chapman in ue5-main branch]
This commit is contained in:
danny chapman
2023-06-02 12:32:07 -04:00
parent 790094bc5d
commit 0e5c4849f3
2 changed files with 49 additions and 50 deletions

View File

@@ -259,56 +259,6 @@ void FAnimNode_RigidBody::Initialize_AnyThread(const FAnimationInitializeContext
#endif
}
FTransform SpaceToWorldTransform(ESimulationSpace Space, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace:
return ComponentToWorld;
case ESimulationSpace::WorldSpace:
return FTransform::Identity;
case ESimulationSpace::BaseBoneSpace:
return BaseBoneTM * ComponentToWorld;
default:
return FTransform::Identity;
}
}
FVector WorldVectorToSpaceNoScale(ESimulationSpace Space, const FVector& WorldDir, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch(Space)
{
case ESimulationSpace::ComponentSpace: return ComponentToWorld.InverseTransformVectorNoScale(WorldDir);
case ESimulationSpace::WorldSpace: return WorldDir;
case ESimulationSpace::BaseBoneSpace:
return BaseBoneTM.InverseTransformVectorNoScale(ComponentToWorld.InverseTransformVectorNoScale(WorldDir));
default: return FVector::ZeroVector;
}
}
FVector WorldPositionToSpace(ESimulationSpace Space, const FVector& WorldPoint, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace: return ComponentToWorld.InverseTransformPosition(WorldPoint);
case ESimulationSpace::WorldSpace: return WorldPoint;
case ESimulationSpace::BaseBoneSpace:
return BaseBoneTM.InverseTransformPosition(ComponentToWorld.InverseTransformPosition(WorldPoint));
default: return FVector::ZeroVector;
}
}
FORCEINLINE_DEBUGGABLE FTransform ConvertCSTransformToSimSpace(ESimulationSpace SimulationSpace, const FTransform& InCSTransform, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (SimulationSpace)
{
case ESimulationSpace::ComponentSpace: return InCSTransform;
case ESimulationSpace::WorldSpace: return InCSTransform * ComponentToWorld;
case ESimulationSpace::BaseBoneSpace: return InCSTransform.GetRelativeTransform(BaseBoneTM); break;
default: ensureMsgf(false, TEXT("Unsupported Simulation Space")); return InCSTransform;
}
}
void FAnimNode_RigidBody::UpdateComponentPose_AnyThread(const FAnimationUpdateContext& Context)
{
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(UpdateComponentPose_AnyThread)

View File

@@ -525,3 +525,52 @@ struct TStructOpsTypeTraits<FAnimNode_RigidBody> : public TStructOpsTypeTraitsBa
};
#endif
FORCEINLINE_DEBUGGABLE FTransform SpaceToWorldTransform(
ESimulationSpace Space, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace: return ComponentToWorld;
case ESimulationSpace::WorldSpace: return FTransform::Identity;
case ESimulationSpace::BaseBoneSpace: return BaseBoneTM * ComponentToWorld;
default: return FTransform::Identity;
}
}
FORCEINLINE_DEBUGGABLE FVector WorldVectorToSpaceNoScale(
ESimulationSpace Space, const FVector& WorldDir, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace: return ComponentToWorld.InverseTransformVectorNoScale(WorldDir);
case ESimulationSpace::WorldSpace: return WorldDir;
case ESimulationSpace::BaseBoneSpace:
return BaseBoneTM.InverseTransformVectorNoScale(ComponentToWorld.InverseTransformVectorNoScale(WorldDir));
default: return FVector::ZeroVector;
}
}
FORCEINLINE_DEBUGGABLE FVector WorldPositionToSpace(
ESimulationSpace Space, const FVector& WorldPoint, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace: return ComponentToWorld.InverseTransformPosition(WorldPoint);
case ESimulationSpace::WorldSpace: return WorldPoint;
case ESimulationSpace::BaseBoneSpace:
return BaseBoneTM.InverseTransformPosition(ComponentToWorld.InverseTransformPosition(WorldPoint));
default: return FVector::ZeroVector;
}
}
FORCEINLINE_DEBUGGABLE FTransform ConvertCSTransformToSimSpace(
ESimulationSpace Space, const FTransform& InCSTransform, const FTransform& ComponentToWorld, const FTransform& BaseBoneTM)
{
switch (Space)
{
case ESimulationSpace::ComponentSpace: return InCSTransform;
case ESimulationSpace::WorldSpace: return InCSTransform * ComponentToWorld;
case ESimulationSpace::BaseBoneSpace: return InCSTransform.GetRelativeTransform(BaseBoneTM); break;
default: ensureMsgf(false, TEXT("Unsupported Simulation Space")); return InCSTransform;
}
}