// Copyright Epic Games, Inc. All Rights Reserved. #include "AnimGraphRuntimeTrace.h" #if ANIM_TRACE_ENABLED #include "ObjectTrace.h" #include "Trace/Trace.inl" #include "Animation/BlendSpace.h" #include "AnimNodes/AnimNode_BlendSpacePlayer.h" #include "AnimNodes/AnimNode_BlendSpaceGraphBase.h" #include "Animation/AnimInstanceProxy.h" UE_TRACE_EVENT_BEGIN(Animation, BlendSpacePlayer) UE_TRACE_EVENT_FIELD(uint64, Cycle) UE_TRACE_EVENT_FIELD(uint64, AnimInstanceId) UE_TRACE_EVENT_FIELD(uint64, BlendSpaceId) UE_TRACE_EVENT_FIELD(int32, NodeId) UE_TRACE_EVENT_FIELD(float, PositionX) UE_TRACE_EVENT_FIELD(float, PositionY) UE_TRACE_EVENT_FIELD(float, PositionZ) UE_TRACE_EVENT_FIELD(float, FilteredPositionX) UE_TRACE_EVENT_FIELD(float, FilteredPositionY) UE_TRACE_EVENT_FIELD(float, FilteredPositionZ) UE_TRACE_EVENT_END() void FAnimGraphRuntimeTrace::OutputBlendSpacePlayer(const FAnimationBaseContext& InContext, const FAnimNode_BlendSpacePlayerBase& InNode) { bool bEventEnabled = UE_TRACE_CHANNELEXPR_IS_ENABLED(AnimationChannel); if (!bEventEnabled) { return; } check(InContext.AnimInstanceProxy); TRACE_OBJECT(InContext.AnimInstanceProxy->GetAnimInstanceObject()); TRACE_OBJECT(InNode.GetBlendSpace()); FVector SampleCoordinates = InNode.GetPosition(); FVector FilteredPosition = InNode.GetFilteredPosition(); UE_TRACE_LOG(Animation, BlendSpacePlayer, AnimationChannel) << BlendSpacePlayer.Cycle(FPlatformTime::Cycles64()) << BlendSpacePlayer.AnimInstanceId(FObjectTrace::GetObjectId(InContext.AnimInstanceProxy->GetAnimInstanceObject())) << BlendSpacePlayer.BlendSpaceId(FObjectTrace::GetObjectId(InNode.GetBlendSpace())) << BlendSpacePlayer.NodeId(InContext.GetCurrentNodeId()) << BlendSpacePlayer.PositionX(static_cast(SampleCoordinates.X)) << BlendSpacePlayer.PositionY(static_cast(SampleCoordinates.Y)) << BlendSpacePlayer.PositionZ(static_cast(SampleCoordinates.Z)) << BlendSpacePlayer.FilteredPositionX(static_cast(FilteredPosition.X)) << BlendSpacePlayer.FilteredPositionY(static_cast(FilteredPosition.Y)) << BlendSpacePlayer.FilteredPositionZ(static_cast(FilteredPosition.Z)); } void FAnimGraphRuntimeTrace::OutputBlendSpace(const FAnimationBaseContext& InContext, const FAnimNode_BlendSpaceGraphBase& InNode) { bool bEventEnabled = UE_TRACE_CHANNELEXPR_IS_ENABLED(AnimationChannel); if (!bEventEnabled) { return; } check(InContext.AnimInstanceProxy); TRACE_OBJECT(InContext.AnimInstanceProxy->GetAnimInstanceObject()); TRACE_OBJECT(InNode.GetBlendSpace()); FVector Coordinates = InNode.GetPosition(); FVector FilteredCoordinates = InNode.GetFilteredPosition(); UE_TRACE_LOG(Animation, BlendSpacePlayer, AnimationChannel) << BlendSpacePlayer.Cycle(FPlatformTime::Cycles64()) << BlendSpacePlayer.AnimInstanceId(FObjectTrace::GetObjectId(InContext.AnimInstanceProxy->GetAnimInstanceObject())) << BlendSpacePlayer.BlendSpaceId(FObjectTrace::GetObjectId(InNode.GetBlendSpace())) << BlendSpacePlayer.NodeId(InContext.GetCurrentNodeId()) << BlendSpacePlayer.PositionX(static_cast(Coordinates.X)) << BlendSpacePlayer.PositionY(static_cast(Coordinates.Y)) << BlendSpacePlayer.PositionZ(static_cast(Coordinates.Z)) << BlendSpacePlayer.FilteredPositionX(static_cast(FilteredCoordinates.X)) << BlendSpacePlayer.FilteredPositionY(static_cast(FilteredCoordinates.Y)) << BlendSpacePlayer.FilteredPositionZ(static_cast(FilteredCoordinates.Z)); } #endif