Files
UnrealEngineUWP/Engine/Source/Runtime/AnimGraphRuntime/Public/BoneControllers/AnimNode_SkeletalControlBase.h

85 lines
3.0 KiB
C
Raw Normal View History

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
/**
* Abstract base class for a skeletal controller.
* A SkelControl is a module that can modify the position or orientation of a set of bones in a skeletal mesh in some programmatic way.
*/
#pragma once
#include "Animation/AnimNodeBase.h"
#include "Animation/InputScaleBias.h"
#include "AnimNode_SkeletalControlBase.generated.h"
USTRUCT()
struct ANIMGRAPHRUNTIME_API FAnimNode_SkeletalControlBase : public FAnimNode_Base
{
GENERATED_USTRUCT_BODY()
// Input link
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Links)
FComponentSpacePoseLink ComponentPose;
// Current strength of the skeletal control
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings, meta=(PinShownByDefault))
mutable float Alpha;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings)
FInputScaleBias AlphaScaleBias;
/*
* Max LOD that this node is allowed to run
* For example if you have LODThreadhold to be 2, it will run until LOD 2 (based on 0 index)
* when the component LOD becomes 3, it will stop update/evaluate
* currently transition would be issue and that has to be re-visited
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Performance, meta = (DisplayName = "LOD Threshold"))
int32 LODThreshold;
Copying //UE4/Orion-Staging to //UE4/Main (Source: //Orion/Dev-General @ 2912736) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2912513 on 2016/03/16 by David.Ratti attempted cook fix #rb none #tests compile Change 2912456 on 2016/03/16 by Zak.Middleton #ue4 - Move Replay client interpolation mode check to OnRegister(), out of TickComponent() so we don't check it constantly. #rb John.Pollard #tests Replays and MultiPIE vs AI Change 2912386 on 2016/03/16 by Ben.Marsh BuildGraph: Add quotes around custom build node lists, so we can support node names with spaces. Change 2912378 on 2016/03/16 by Ben.Marsh BuildGraph: Fix format of custom build arguments when running with buildgraph. Change 2912318 on 2016/03/16 by Marcus.Wassmer Fix mallocleakdetection false positives, and hash collision data corruption. #rb none #test leak finding on goldenpath Change 2912242 on 2016/03/16 by Lukasz.Furman CIS fix #rb none #tests none Change 2912239 on 2016/03/16 by Ben.Marsh UBT: Include the project "Build" folder in the generated project files. It's pretty common to want to edit configuration data that's stored there. #rb none #tests generated project files using UGS after making change Change 2912211 on 2016/03/16 by Ben.Marsh BuildFarm: Allow disabling the local DDC by setting the DDC override environment variable to "None". Testing performance of just using shared DDC for builders. #rb none #codereview Wes.Hunt #tests none Change 2912196 on 2016/03/16 by Mieszko.Zielinski Added a missing #pragma once to GameplayDebuggerCompat.h #Orion #rb Lukasz.Furman #test none Change 2912165 on 2016/03/16 by Lukasz.Furman new gameplay debugger and some replication fixes (disabled by default) uncommment debugger's setup line in FOrionGameModule::StartupModule to enable #orion #rb none #tests yes, a lot. #codereview Mieszko.Zielinski Change 2912065 on 2016/03/16 by Jason.Bestimt [AUTOMERGE] #ORION_MAIN - Copy of DevUI (POST MERGE) @ CL 2912016 #RB:none #Tests:none #CodeReview: matt.schembari -------- Integrated using branch //Orion/Main_to_//Orion/Dev-General of change#2912060 by Jason.Bestimt on 2016/03/16 15:32:56. Change 2912045 on 2016/03/16 by David.Ratti Add support for gameplay cues retrieiving the ability or gameplay effect level of the thing that instigated them. Also added level requirement settings in the addition particle system options in gameplay cues #rb DanY #tests PIE Change 2912030 on 2016/03/16 by Alex.Fennell Merging //Portal/Dev-LibCurl_update/Engine/Source/Runtime/Online/... to //Orion/Dev-General/Engine/Source/Runtime/Online/... support for cookies across curl easy handles in libcurl #TESTS: cookie support confirmed by using the http test targetting google.com #RB: david.nikdel #codereview: david.nikdel, jason.bestimt Change 2911870 on 2016/03/16 by Laurent.Delayen - Added FBranchingPointNotifyPayload used in AnimNotify and AnimNotifyState notifications. - FBranchingPointNotifyPayload includes MontageInstance InstanceID to uniquely identify which Montage it came from. - New notifications are backwards compatible with old. - Added bIsNativeBranchingPoint flag to notify classes to force them into branching points. #rb martin.wilson, frank.gigliotti #tests Kuro VS Rampage abilities in networked PIE Change 2911763 on 2016/03/16 by Nick.Atamas Prevents a re-entrancy crash caused by potentially complex thumbnail generators. In general, we should not be doing heavy lifting in the asset browser until the user has released their mouse. This is especially true when a user is clicking on the content browser tab to bring it to front for the first time. This is probably a good change regardless of the re-entrancy issue. #rb none #test Editor does not crash. #codereview Matt.Kuhlenschmidt Change 2911631 on 2016/03/16 by Dmitry.Rekman Fix AvgPing perfcounter being occasionally NaN (FORT-20523) - Prevent division by zero. #rb none [CL 2917701 by Andrew Grant in Main branch]
2016-03-21 21:11:39 -04:00
UPROPERTY(Transient)
float ActualAlpha;
public:
FAnimNode_SkeletalControlBase()
: Alpha(1.0f)
, LODThreshold(INDEX_NONE)
Copying //UE4/Orion-Staging to //UE4/Main (Source: //Orion/Dev-General @ 2912736) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2912513 on 2016/03/16 by David.Ratti attempted cook fix #rb none #tests compile Change 2912456 on 2016/03/16 by Zak.Middleton #ue4 - Move Replay client interpolation mode check to OnRegister(), out of TickComponent() so we don't check it constantly. #rb John.Pollard #tests Replays and MultiPIE vs AI Change 2912386 on 2016/03/16 by Ben.Marsh BuildGraph: Add quotes around custom build node lists, so we can support node names with spaces. Change 2912378 on 2016/03/16 by Ben.Marsh BuildGraph: Fix format of custom build arguments when running with buildgraph. Change 2912318 on 2016/03/16 by Marcus.Wassmer Fix mallocleakdetection false positives, and hash collision data corruption. #rb none #test leak finding on goldenpath Change 2912242 on 2016/03/16 by Lukasz.Furman CIS fix #rb none #tests none Change 2912239 on 2016/03/16 by Ben.Marsh UBT: Include the project "Build" folder in the generated project files. It's pretty common to want to edit configuration data that's stored there. #rb none #tests generated project files using UGS after making change Change 2912211 on 2016/03/16 by Ben.Marsh BuildFarm: Allow disabling the local DDC by setting the DDC override environment variable to "None". Testing performance of just using shared DDC for builders. #rb none #codereview Wes.Hunt #tests none Change 2912196 on 2016/03/16 by Mieszko.Zielinski Added a missing #pragma once to GameplayDebuggerCompat.h #Orion #rb Lukasz.Furman #test none Change 2912165 on 2016/03/16 by Lukasz.Furman new gameplay debugger and some replication fixes (disabled by default) uncommment debugger's setup line in FOrionGameModule::StartupModule to enable #orion #rb none #tests yes, a lot. #codereview Mieszko.Zielinski Change 2912065 on 2016/03/16 by Jason.Bestimt [AUTOMERGE] #ORION_MAIN - Copy of DevUI (POST MERGE) @ CL 2912016 #RB:none #Tests:none #CodeReview: matt.schembari -------- Integrated using branch //Orion/Main_to_//Orion/Dev-General of change#2912060 by Jason.Bestimt on 2016/03/16 15:32:56. Change 2912045 on 2016/03/16 by David.Ratti Add support for gameplay cues retrieiving the ability or gameplay effect level of the thing that instigated them. Also added level requirement settings in the addition particle system options in gameplay cues #rb DanY #tests PIE Change 2912030 on 2016/03/16 by Alex.Fennell Merging //Portal/Dev-LibCurl_update/Engine/Source/Runtime/Online/... to //Orion/Dev-General/Engine/Source/Runtime/Online/... support for cookies across curl easy handles in libcurl #TESTS: cookie support confirmed by using the http test targetting google.com #RB: david.nikdel #codereview: david.nikdel, jason.bestimt Change 2911870 on 2016/03/16 by Laurent.Delayen - Added FBranchingPointNotifyPayload used in AnimNotify and AnimNotifyState notifications. - FBranchingPointNotifyPayload includes MontageInstance InstanceID to uniquely identify which Montage it came from. - New notifications are backwards compatible with old. - Added bIsNativeBranchingPoint flag to notify classes to force them into branching points. #rb martin.wilson, frank.gigliotti #tests Kuro VS Rampage abilities in networked PIE Change 2911763 on 2016/03/16 by Nick.Atamas Prevents a re-entrancy crash caused by potentially complex thumbnail generators. In general, we should not be doing heavy lifting in the asset browser until the user has released their mouse. This is especially true when a user is clicking on the content browser tab to bring it to front for the first time. This is probably a good change regardless of the re-entrancy issue. #rb none #test Editor does not crash. #codereview Matt.Kuhlenschmidt Change 2911631 on 2016/03/16 by Dmitry.Rekman Fix AvgPing perfcounter being occasionally NaN (FORT-20523) - Prevent division by zero. #rb none [CL 2917701 by Andrew Grant in Main branch]
2016-03-21 21:11:39 -04:00
, ActualAlpha(0.f)
{
}
public:
#if WITH_EDITORONLY_DATA
// forwarded pose data from the wired node which current node's skeletal control is not applied yet
Copying //UE4/Dev-Framework to //UE4/Main @ 2830052 #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2807479 on 2015/12/17 by Zak.Middleton #ue4 - Optimize allocations in FFinalPostProcessSettings. Fix bug skipping an element when updating the ContributingCubemaps array if one is removed during an iteration. #rb Aaron.Mcleran #codereview Martin.Mittring #jira UE-24485 Change 2807695 on 2015/12/17 by Aaron.McLeran Changing the VolumeScale sound concurrency implementation to be a volume scalar on older sounds in a concurrency group rather than scale new sounds. #rb zak.middleton Change 2808628 on 2015/12/18 by Thomas.Sarkanen Minor optimization: Dont call GetWorld() 3 times in a row in USceneComponent::ShouldRender() #rb Martin.Wilson Change 2810090 on 2015/12/21 by Ori.Cohen Allow collision and trail particles to run off the game thread. Clean up missing marshelled AsyncComponentToWorld Change 2814518 on 2016/01/04 by Marc.Audy Use Reset instead of Empty Change 2814530 on 2016/01/04 by James.Golding UE-2689 Hook up lots of new icons for component classes #rb thomas.sarkanen Change 2814665 on 2016/01/04 by Marc.Audy PR #1860:Fix ChildActorComponent linking issue when extended from game (Contributed by lion03) Change 2814686 on 2016/01/04 by Benn.Gallagher Fix for radial force components applying impulses multiple times to destructible components #rb Ori.Cohen Change 2815221 on 2016/01/04 by Aaron.McLeran UE-24528 Fixing focus-distance scaling and focus priority scaling working with concurrency settings. USoundAttenuation: - Added methods to SoundAttenuation to get focus, attenuation, and distance scale based on focus factor. - Added NonFocusDistanceScale parameter to attenuation settings customization so its setable by users USoundBase: - Added function on USoundBase which checks IsLooping, which checks the duration - Removed functions IsAudible and IsAudibleSimple from USoundBase since that functionality is accomplished differently and takes into account focus-distance scaling now. FActiveSound: - Caching values of FocusPriorityScale and FocusDistanceScale to Active sound so that can be used for audibility checks - Included FocusDistanceScale when computing bIsAudible in Active sound - Moved GetAttenuationListenerData and the accompanying private struct FAttenuationListenerData to FAudioDevice since the audio device and moved code which computes focus factor and geometry into FAudioDevice::GetFocusFactor since it needs to be computed before an active sound exist FAudioDevice: - Added SoundIsAudible function which queries a particular sound if its audible based on attenuation settings, focus factor, etc. Will optionally return computed MaxDistance to avoid recomputing it in certain cases. - Added a few helper functions: FindClosestListenerIndex, GetAttenuationListenerData - Added GetFocusFactor, which performs the vector math to determine focus factor (0.0 is in-focus, 1.0 is out of focus) for a given sound and listener and attenuation focus settings. - Updated CreateComponent and PlaySoundAtLocation functions to use the new SoundIsAudible function rather than the old IsAudibleSimple #rb zak.middleton Change 2815694 on 2016/01/05 by thomas.sarkanen Added test texture Change 2815695 on 2016/01/05 by thomas.sarkanen Modified test texture Change 2815709 on 2016/01/05 by James.Golding PR #1778 : New BP-callablle function AActor::WasRecentlyRendered, with optional tolerance in seconds https://github.com/EpicGames/UnrealEngine/pull/1778 #github 1778 #jira UE-23674 #rb jurre.debaare Change 2815711 on 2016/01/05 by James.Golding PR #1534 : Add missing default tolerance value for FVector2D::Equal https://github.com/EpicGames/UnrealEngine/pull/1534 #github 1534 #jira UE-20838 #rb jurre.debaare Change 2815714 on 2016/01/05 by James.Golding PR #1887 : Added 'Thickness' Parameter to all valid options in Draw Debug Helper https://github.com/EpicGames/UnrealEngine/pull/1887 #github 1887 #jira UE-24802 #rb jurre.debaare Change 2815725 on 2016/01/05 by James.Golding Added comment that USkeletalMeshComponent::bEnablePhysicsOnDedicatedServer cannot be changed at runtime #jira UE-20439 Change 2815813 on 2016/01/05 by Marc.Audy Move dispatch of transition functions to new OnMatchStateSet virtual which is called from SetMatchState allowing subclasses to insert their own handling between the set of the variable and dispatch to GameState and Blueprints rather than having to override the entire function. #codereview Peter.Knepley Change 2815884 on 2016/01/05 by James.Golding - Avoid PSC iterating over all particle emitters each tick to check for changes in DetailMode. Now remember global DetailMode when we last checked, and only iterate again if that has changed. - Add 'WarmupTime' and 'CPUCollision' to Asset Registry Tags for Particle Systems #rb simon.tovey #codereview gil.gribb Change 2816306 on 2016/01/05 by Marc.Audy (4.11) Pass boolean to OnComponentDestroyed that indicates if the entire Actor's hierarchy is being destroyed. If so we can avoid doing a lot of expensive tear down, particularly detaching each component one at a time from the hierarchy and causing massive position/bounds updates. #rb Zak.Middleton, James.Golding
2016-01-15 13:01:30 -05:00
FCSPose<FCompactHeapPose> ForwardedPose;
#endif //#if WITH_EDITORONLY_DATA
// FAnimNode_Base interface
virtual void Initialize(const FAnimationInitializeContext& Context) override;
virtual void CacheBones(const FAnimationCacheBonesContext& Context) override;
virtual void Update(const FAnimationUpdateContext& Context) final;
virtual void EvaluateComponentSpace(FComponentSpacePoseContext& Output) final;
// End of FAnimNode_Base interface
protected:
// Interface for derived skeletal controls to implement
// use this function to update for skeletal control base
virtual void UpdateInternal(const FAnimationUpdateContext& Context);
// use this function to evaluate for skeletal control base
virtual void EvaluateComponentSpaceInternal(FComponentSpacePoseContext& Context);
// Evaluate the new component-space transforms for the affected bones.
Added FCompactPose, contains only the bone transforms needed by RequiredBones. Allows us to do animation evaluation without having to refer to required bones array all the time API Breaking Changes Removed Functions: FA2CSPose::SafeSetCSBoneTransforms FA2CSPose::LocalBlendCSBoneTransforms Member Type Changes: - int32 -> FCompactPoseBoneIndex --- FBoneTransform::BoneIndex --- FABRIKChainLink::BoneIndex - FA2CSPose -> FCSPose<FCompactPose> --- FAnimNode_SkeletalControlBase::ForwardedPose --- FComponentSpacePoseContext::Pose - FA2Pose -> FCompactPose --- FSlotEvaluationPose::Pose --- FAnimNode_TransitionPoseEvaluator::CachedPose --- FAnimNode_SaveCachedPose::CachedPose --- FPoseContext::Pose Paramater Changes: - FA2Pose& -> FCompactPose& --- UAnimSingleNodeInstance::InternalBlendSpaceEvaluatePose (FA2Pose& Pose -> FCompactPose&) --- UAnimInstance::SequenceEvaluatePose --- UAnimInstance::BlendSequences --- UAnimInstance::CopyPose --- UAnimInstance::ApplyAdditiveSequence --- UAnimInstance::BlendSpaceEvaluatePose --- UAnimInstance::BlendRotationOffset --- UAnimInstance::GetSlotWeight --- UAnimInstance::SlotEvaluatePose - FA2CSPose& -> FCSPose<FCompactPose>& --- FAnimNode_SkeletalControlBase::EvaluateBoneTransforms --- UAnimGraphNode_SkeletalControlBase::ConvertCSVectorToBoneSpace --- UAnimGraphNode_SkeletalControlBase::ConvertCSRotationToBoneSpace --- UAnimGraphNode_SkeletalControlBase::ConvertWidgetLocation --- UAnimPreviewInstance::ApplyBoneControllers - TArray<FTransform> -> FCompactPose --- UAnimPreviewInstance::SetKeyImplementation --- UAnimSequence::GetAnimationPose --- UAnimSequence::GetBonePose --- UAnimSequence::GetBonePose_Additive --- UAnimSequence::GetAdditiveBasePose --- UAnimSequence::GetBonePose_AdditiveMeshRotationOnly --- FAnimationRuntime::BlendPosesTogether ( + Removed NumPoses and RequiredBones ) --- FAnimationRuntime::BlendPosesTogetherPerBone ( + Removed NumPoses and RequiredBones ) --- FAnimationRuntime::BlendPosesTogetherPerBoneInMeshSpace ( + Removed NumPoses and RequiredBones ) --- FAnimationRuntime::BlendPosesPerBoneFilter ( + Removed Skeleton and RequiredBones ) --- FAnimationRuntime::GetPoseFromSequence ( + Removed RequiredBones ) --- FAnimationRuntime::GetPoseFromAnimTrack ( + Removed RequiredBones ) --- FAnimationRuntime::FillWithRetargetBaseRefPose ( + Removed RequiredBones ) --- FAnimationRuntime::ConvertPoseToAdditive ( + Removed RequiredBones ) --- FAnimationRuntime::ConvertPoseToMeshRotation ( + Removed RequiredBones ) --- FAnimationRuntime::BlendPosesAccumulate ( + Removed RequiredBones ) --- FAnimationRuntime::BlendAdditivePose ( + Removed RequiredBones ) --- FAnimationRuntime::GetPoseFromBlendSpace ( + Removed RequiredBones ) --- FAnimationRuntime::ConvertCSTransformToBoneSpace --- FAnimationRuntime::ConvertBoneSpaceTransformToCS --- FAnimationRuntime::BlendMeshPosesPerBoneWeights ( + Removed Skeleton and RequiredBones ) --- FAnimationRuntime::BlendLocalPosesPerBoneWeights ( + Removed Skeleton and RequiredBones ) - TArray<FTransform> -> FTransform --- UAnimSequence::ResetRootBoneForRootMotion - int32 -> FCompactPoseBoneIndex --- UAnimSequence::RetargetBoneTransform FAnimationRuntime: Many changes to animation operation functions, removal of NumPoses and RequiredBones, conversion of TArray<FTransform> to FCompactPose Removed USTRUCT markup from FBoneTransform Removed UPROPERTY markup from FAnimNode_TransitionPoseEvaluator::CachedPose [CL 2556671 by Martin Wilson in Main branch]
2015-05-19 06:19:22 -04:00
virtual void EvaluateBoneTransforms(USkeletalMeshComponent* SkelComp, FCSPose<FCompactPose>& MeshBases, TArray<FBoneTransform>& OutBoneTransforms) {}
// return true if it is valid to Evaluate
virtual bool IsValidToEvaluate(const USkeleton* Skeleton, const FBoneContainer& RequiredBones) { return false; }
// initialize any bone references you have
virtual void InitializeBoneReferences(const FBoneContainer& RequiredBones){};
/** Allow base to add info to the node debug output */
void AddDebugNodeData(FString& OutDebugData);
private:
// Resused bone transform array to avoid reallocating in skeletal controls
TArray<FBoneTransform> BoneTransforms;
};