Files
UnrealEngineUWP/Engine/Source/Editor/AnimGraph/Private/AnimationCustomTransitionSchema.cpp
Marc Audy 26836a22cd Copying //UE4/Dev-Framework to Dev-Main (//UE4/Dev-Main) @ 2868852
#lockdown Nick.Penwarden

==========================
MAJOR FEATURES + CHANGES
==========================

Change 2821607 on 2016/01/08 by Mieszko.Zielinski

	Added a way to limit amount of information logged by vlog by discarding logs from classes from outside of class whitelist #UE4

	This feature was followed by refactoring of functions taking FVisualLogEntry pointers to use references instead.

	#rb Lukasz.Furman
	#codereview John.Abercrombie

Change 2828384 on 2016/01/14 by Mieszko.Zielinski

	Back out of visual log refactor done as part of CL#2821607 #UE4

Change 2855722 on 2016/02/04 by Zak.Middleton

	#ue4 - Expose PrimitiveComponent GetCollisionEnabled(), IsCollisionEnabled(), IsQueryCollisionEnabled(), IsPhysicsCollisionEnabled() functions to blueprints.

	#rb Daniel.Broder, Ori.Cohen
	#codereview Bob.Tellez
	#jira UE-26411

Change 2855737 on 2016/02/04 by James.Golding

	Add test AssetUserData C++ class to QAGame

Change 2855739 on 2016/02/04 by James.Golding

	PR #1858 : Add abstract and editinlinenew to AssetUserData class, so derived classes can be added to assets via details panel
	https://github.com/EpicGames/UnrealEngine/pull/1858
	#github 1858
	#jira UE-24494
	#rb thomas.sarkanen

Change 2855842 on 2016/02/04 by James.Golding

	UE-23968 : Add clamping to Friction, Restitution, Density and RaiseMassToPower properties of PhysicalMaterial
	#codereview ori.cohen
	#rb thomas.sarkanen

Change 2855843 on 2016/02/04 by James.Golding

	PR #1984 : Add 'AssetUserData' support to AnimationAsset/Texture
	https://github.com/EpicGames/UnrealEngine/pull/1984
	#github 1984
	#jira UE-25913
	#rb thomas.sarkanen

Change 2855844 on 2016/02/04 by James.Golding

	UE-23176 Fix incorrect clamping in GenerateKDopAsSimpleCollision() which could cause degenerate hulls
	Also don't 'nudge' kdops if there are other primitives present, will offset from mesh we were fitting around
	#rb thomas.sarkanen

Change 2855850 on 2016/02/04 by Benn.Gallagher

	Update required LOD bones when associating a cloth chunk that uses bones that aren't weighted to that LOD
	#rb Martin.Wilson

Change 2856409 on 2016/02/04 by Zak.Middleton

	#ue4 - Change LogSpawn warnings to normal logs for cases that are common and valid during gameplay (failed due to collision at the target location, or failed because it is destroyed in the process of spawning, ie projectile spawned in a target).

	#codereview Jeff.Farris

Change 2857018 on 2016/02/05 by Benn.Gallagher

	Fixes for various anim graph related subgraph issues/crashes
	#rb Ben.Cosh

Change 2857193 on 2016/02/05 by Lukasz.Furman

	extended crowd agent interface to handle avoidance groups
	#ue4 UE-24823
	#1896

Change 2857200 on 2016/02/05 by Lukasz.Furman

	fixed memory leak in CrowdManager
	#ue UE-26516
	#2026
	#codereview Mieszko.Zielinski

Change 2857417 on 2016/02/05 by Lina.Halper

	Add keyword for animation functions

Change 2858854 on 2016/02/08 by Benn.Gallagher

	Fixed pose evaluator customizations being processed at the wrong time which caused properties to always be re-added even if removed from the details panel, causing duplicated entries.
	#jira UE-8421
	#rb Lina.Halper

Change 2858855 on 2016/02/08 by Benn.Gallagher

	Fixed blendspace players only reporting normalized time when using a time getter in an anim graph transition.
	#rb Lina.Halper

Change 2859159 on 2016/02/08 by Aaron.McLeran

	UE-25586 Fix for reporting audio memory usage

	- Realtime decompressed sounds that have CachedRealtimeFirstBuffers need to report the compressed asset size

Change 2859192 on 2016/02/08 by Laurent.Delayen

	Removed check disallowing cooked additive animations from using AnimationRelative and AnimationScale retargeting modes (on the root bone or editor).
	Skip AnimationRelative retargeting for baked additive animations since it gets cancelled out during the additive creation process.

	#rb martin.wilson
	#codereview lina.halper

Change 2859238 on 2016/02/08 by Lina.Halper

	Git pull request #1895

Change 2859239 on 2016/02/08 by Lina.Halper

	Git pull request #1813

Change 2859453 on 2016/02/08 by Aaron.McLeran

[CL 2868856 by Marc Audy in Main branch]
2016-02-16 13:35:21 -05:00

85 lines
3.3 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#include "AnimGraphPrivatePCH.h"
#include "AnimationCustomTransitionSchema.h"
#include "AnimGraphNode_CustomTransitionResult.h"
#include "AnimGraphNode_TransitionPoseEvaluator.h"
#include "AnimStateTransitionNode.h"
#include "AnimationCustomTransitionGraph.h"
/////////////////////////////////////////////////////
// UAnimationCustomTransitionSchema
UAnimationCustomTransitionSchema::UAnimationCustomTransitionSchema(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
void UAnimationCustomTransitionSchema::CreateDefaultNodesForGraph(UEdGraph& Graph) const
{
// Create the result node
FGraphNodeCreator<UAnimGraphNode_CustomTransitionResult> ResultNodeCreator(Graph);
UAnimGraphNode_CustomTransitionResult* ResultSinkNode = ResultNodeCreator.CreateNode();
ResultSinkNode->NodePosX = 0;
ResultSinkNode->NodePosY = 0;
ResultNodeCreator.Finalize();
SetNodeMetaData(ResultSinkNode, FNodeMetadata::DefaultGraphNode);
UAnimationCustomTransitionGraph* TypedGraph = CastChecked<UAnimationCustomTransitionGraph>(&Graph);
TypedGraph->MyResultNode = ResultSinkNode;
// Create the source and destination input states
{
FGraphNodeCreator<UAnimGraphNode_TransitionPoseEvaluator> SourceNodeCreator(Graph);
UAnimGraphNode_TransitionPoseEvaluator* SourcePoseNode = SourceNodeCreator.CreateNode();
SourcePoseNode->Node.DataSource = EEvaluatorDataSource::EDS_SourcePose;
SourcePoseNode->NodePosX = -300;
SourcePoseNode->NodePosY = -150;
SourceNodeCreator.Finalize();
SetNodeMetaData(SourcePoseNode, FNodeMetadata::DefaultGraphNode);
}
{
FGraphNodeCreator<UAnimGraphNode_TransitionPoseEvaluator> DestinationNodeCreator(Graph);
UAnimGraphNode_TransitionPoseEvaluator* DestinationPoseNode = DestinationNodeCreator.CreateNode();
DestinationPoseNode->Node.DataSource = EEvaluatorDataSource::EDS_DestinationPose;
DestinationPoseNode->NodePosX = -300;
DestinationPoseNode->NodePosY = 150;
DestinationNodeCreator.Finalize();
SetNodeMetaData(DestinationPoseNode, FNodeMetadata::DefaultGraphNode);
}
}
void UAnimationCustomTransitionSchema::GetGraphDisplayInformation(const UEdGraph& Graph, /*out*/ FGraphDisplayInfo& DisplayInfo) const
{
DisplayInfo.PlainName = FText::FromString( Graph.GetName() );
if (const UAnimStateTransitionNode* TransNode = Cast<const UAnimStateTransitionNode>(Graph.GetOuter()))
{
DisplayInfo.PlainName = FText::Format( NSLOCTEXT("Animation", "CustomBlendGraphTitle", "{0} (custom blend)"), TransNode->GetNodeTitle(ENodeTitleType::FullTitle) );
}
DisplayInfo.DisplayName = DisplayInfo.PlainName;
}
void UAnimationCustomTransitionSchema::HandleGraphBeingDeleted(UEdGraph& GraphBeingRemoved) const
{
if(UBlueprint* Blueprint = FBlueprintEditorUtils::FindBlueprintForGraph(&GraphBeingRemoved))
{
// Look for state nodes that reference this graph
TArray<UAnimStateTransitionNode*> TransitionNodes;
FBlueprintEditorUtils::GetAllNodesOfClass<UAnimStateTransitionNode>(Blueprint, TransitionNodes);
for(UAnimStateTransitionNode* Node : TransitionNodes)
{
if(Node->CustomTransitionGraph == &GraphBeingRemoved)
{
// Clear out the logic for this node as we're removing the graph
Node->Modify();
Node->LogicType = ETransitionLogicType::TLT_StandardBlend;
Node->CustomTransitionGraph = nullptr;
}
}
}
}