2019-12-26 15:32:37 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2016-02-24 14:23:53 -05:00
|
|
|
|
|
|
|
|
#include "GameplayDebuggerExtension_Spectator.h"
|
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
|
|
|
#include "InputCoreTypes.h"
|
|
|
|
|
#include "Engine/World.h"
|
2016-02-24 14:23:53 -05:00
|
|
|
#include "GameplayDebuggerPlayerManager.h"
|
|
|
|
|
#include "Engine/DebugCameraController.h"
|
|
|
|
|
#include "Engine/Player.h"
|
|
|
|
|
#include "GameFramework/HUD.h"
|
|
|
|
|
#include "GameFramework/WorldSettings.h"
|
|
|
|
|
|
|
|
|
|
FGameplayDebuggerExtension_Spectator::FGameplayDebuggerExtension_Spectator()
|
|
|
|
|
{
|
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3038004)
#rb None
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3021479 on 2016/06/21 by Marc.Audy
Fix child actor properties set in the parent's construction script from being wiped out (4.12)
#jira UE-31956
Change 3021703 on 2016/06/21 by Marc.Audy
Fix crash due to copying properties to registered components and then reregistering them. (4.12)
#jira UE-31973
Change 3022105 on 2016/06/21 by Jeremy.Ernst
-new test assets for James for PSD node
Change 3022621 on 2016/06/22 by James.Golding
Add AnimBP for testing PSD
Change 3022622 on 2016/06/22 by James.Golding
Only restrict anim asset selection for UAnimGraphNode_AssetPlayerBase derived nodes
Change 3022656 on 2016/06/22 by James.Golding
UE-30537 Fix solid collision geom drawing not working when mirrored
Change 3022657 on 2016/06/22 by James.Golding
Don't crash in FAnimGraphNodeDetails::OnShouldFilterAnimAsset if AnimAsset doesn't have Skeleton asset registry tag (shouldn't happen, but shouldn't crash)
Change 3022663 on 2016/06/22 by James.Golding
UE-31283 Additional extensibility for anim and physics
PR #2434: Morpheme integration changes (Contributed by NaturalMotionTechnology)
Change 3022683 on 2016/06/22 by James.Golding
- Change OrientationDriver to always use PoseAsset for target poses
- Remove NumPoses from PoseAsset and use GetAssetRegistryTags instead
Change 3022891 on 2016/06/22 by mason.seay
Test asset for component hit
Change 3023203 on 2016/06/22 by mason.seay
Updated map to use more noticeable sound assets
Change 3023335 on 2016/06/22 by Marc.Audy
Use AddReferencedObjects instead of iterating array manuallly
Change 3023351 on 2016/06/22 by Ori.Cohen
Fix the case where physics hit events were passing the wrong component's bone info to the hit event.
#JIRA UE-32376
Change 3023368 on 2016/06/22 by mason.seay
Renamed actors in World Outliner
Change 3023425 on 2016/06/22 by mason.seay
Moved asset to new folder and fixed deprecated node
Change 3023429 on 2016/06/22 by mason.seay
Disabled collision on proc mesh
Change 3023553 on 2016/06/22 by Jon.Nabozny
Fix issue where MaxAngularVelocity resets to default on UPrimitiveComponent->BodyInstance. Replicated from CL 3009477.
#JIRA UE-31670
Change 3024669 on 2016/06/23 by James.Golding
Update PSD test assets (removing unused)
Change 3024864 on 2016/06/23 by Marc.Audy
Audio Threading!
Change 3024877 on 2016/06/23 by James.Golding
PR #2375: Allow the creation of custom IStreamingManager (Contributed by bozaro)
Change 3024880 on 2016/06/23 by James.Golding
PR #2209: Fix UGameplayStatics::*Game*Slot documentation (Contributed by Lectem)
Change 3024939 on 2016/06/23 by James.Golding
- Add SwingOnly options to OrientationDriver
- Move EBoneAxis from AnimNode_RotationMultiplier.h to AnimTypes.h
- Calculate gaussian radius per pose, not globally
Change 3024940 on 2016/06/23 by James.Golding
PoseAsset editor improvements
- Replace pose edit box with inline-editable style (with validation)
- Add filter highlight
- Show curve values for each pose when selected
- Add different background for curve list
- Filter box only searches pose list, moved location to indicate that
Change 3024949 on 2016/06/23 by James.Golding
Small update to PSD test AnimBP
Change 3025002 on 2016/06/23 by Ori.Cohen
Fix the case where fixed frame rate combined with t.maxfps would lead to negative delta time. We now take the min of t.maxfps and fixed frame rate.
#JIRA UE-32219
Change 3025214 on 2016/06/23 by mason.seay
Updated Character Movement Map
Change 3025319 on 2016/06/23 by Ori.Cohen
Make sure changing skeletal mesh updates the bone index on body instances already created.
Change 3025435 on 2016/06/23 by Ori.Cohen
Fix welded bodies not updating their collision profile when calling SetCollisionProfile
#JIRA UE-32394
Change 3025581 on 2016/06/23 by mason.seay
Test asset for slicing procedural mesh
Change 3026483 on 2016/06/24 by Marc.Audy
Don't reschedule multiple times tick functions used as prerequisites
#jira UE-32414
Change 3026498 on 2016/06/24 by mason.seay
Updating blueprint for bug repro
Change 3026547 on 2016/06/24 by Thomas.Sarkanen
Fixed crash in FKismetDebugUtilities::GetWatchText()
Crash reported by this UDN: https://udn.unrealengine.com/questions/300110/crash-in-kismetdebugutilities-when-printing-watchp.html
Change 3026598 on 2016/06/24 by James.Golding
Double clicking on poses now toggles them between 1.0 and 0.0 strength
Change 3026768 on 2016/06/24 by Marc.Audy
Change up suspend audio thread cvar sink warning about disabled threading to avoid inappropriate warnings
#jira UE-32468
Change 3026802 on 2016/06/24 by Lina.Halper
#Pose Asset work
# additive blending change : additive scale is saved to [targetscale/sourcescale - 1] where it used to be [targetscale/sourcescale] since blending doesn't work with it
- Blending should work once we save to [targetscale/sourcescale - 1] as normal - i.e. if you blend 0.3, it should not shrink the mesh because you applyed additive to 0.3
- When apply the scale to base, it should multiply [additive scale + 1 ] where additive scale is [targetscale/sourcescale - 1]
- Changed FTransform::Blend to FTransform::Lerp since it's literally just Lerp. Name Blend should be used for Accumulate but changing the name now is dangerous, so I'm keeping Accumulate but changed Blend to Lerp
# pose asset preview fix
- made sure it adds to curve, so you don't have to use delegate to apply
- PreviewOverride is now added to output curve, so we don't have to apply that curve later
- only reason of anim instance delegate is now for normal anim blueprint.
#pose asset change
- Curve extraction happens with ExtractContext, the output curve is stricly output curve
- Pose Asset supports Shrink now, but only shrink if full pose
- Added PoseHandler to handle most of common stuff between different pose nodes
- Still have to work on how to update pose asset - wip
- todo: clean up single node player to handle pose asset in a function
#code review:Martin.Wilson, James.Golding
Change 3026978 on 2016/06/24 by Lina.Halper
- Delete DrivePose Curve type
- Renamed TriggerEvent to DriveAttribute for consistency
- Replaced drive pose to drive attribute
- right now it can't have 0 curve type flags, so everything is DriveAttribute
#code review: James.Golding, Martin.Wilson
Change 3027113 on 2016/06/24 by mason.seay
Test Pose Assets
Change 3027454 on 2016/06/24 by Aaron.McLeran
UE-32492 Fix for cleaning up xaudio2 source voices and xaudio2 buffers if the source fails to initialize
https://answers.unrealengine.com/questions/441080/audio-crash.html
http://crashreporter/Crashes/Show/5689478
Change 3027519 on 2016/06/24 by Lina.Halper
Reverted FTransform name change as that causes compile errors due to lack of deprecated messages
- not worth to keep the old functions and add new one
#code review: Martin.Wilson
Change 3027887 on 2016/06/25 by Lina.Halper
Fix clang build warning
Change 3028703 on 2016/06/27 by Lukasz.Furman
gameplay debugger config improvements, categories and extensions can now be toggled while PIE/simulate is active
#ue4
Change 3028792 on 2016/06/27 by Lukasz.Furman
compilation fix for gameplay debugger
Change 3028950 on 2016/06/27 by Lukasz.Furman
compilation fix for gameplay debugger
Change 3029003 on 2016/06/27 by Ori.Cohen
Added PhysicalAnimation component that allows us to physically drive skeletal mesh from animation
Change 3029019 on 2016/06/27 by Lina.Halper
Update pose from source asset
Change 3029094 on 2016/06/27 by Marc.Audy
If Player->StartSpot is null disregard ShouldSpawnAtStartPoint returned true.
Change 3029308 on 2016/06/27 by Jeremy.Ernst
-adding test animation for PSD node. Has morphs built in to compare against driver result
Change 3029372 on 2016/06/27 by Marc.Audy
Fix compile error after merge
Also just fix the logic to be explicit rather than using suppression for static analysis warning
Change 3029493 on 2016/06/27 by Ori.Cohen
Move PhysicsAsset.h out of public engine header.
Change 3029550 on 2016/06/27 by Lina.Halper
Fix crash with Nan when additive blending of poses\
Change 3029659 on 2016/06/27 by Aaron.McLeran
Adding new minor feature to add new concurrency mode
- stop by lowest priorty but prevent new rather than stop oldest.
Change 3029673 on 2016/06/27 by Aaron.McLeran
#JIRA FORT-24936 Disable EQ on AMD machines since it is causing them to stall and starve other important threads. This is only a temporary solution until a better one is found.
Implementation in CL 3024124
Change 3030470 on 2016/06/28 by Ori.Cohen
Fix OnConstraintBrokenWrapper being accidently wrapped with if WITH_CLOTHING
#JIRA UE-32561
Change 3030586 on 2016/06/28 by Lina.Halper
Preview curve fix from anim curve viewer
#code review: Martin.Wilson
Change 3031054 on 2016/06/28 by Aaron.McLeran
#jira UE-32566 Incorrectly copied CL 3024124 to Dev-Framework
Change 3031535 on 2016/06/28 by mason.seay
Re-saving concurrency asset
Change 3031691 on 2016/06/28 by Marc.Audy
Fix stat sounds not turning on correctly unless a sort was specified
#jira UE-32597
Change 3031883 on 2016/06/28 by Zak.Middleton
#ue4 - Prevent bNotifyJumpApex from being editable, and clean up comments.
Change 3031898 on 2016/06/28 by Zak.Middleton
#ue4 - Fix mesh smoothing on clients popping briefly when crouching. This was due to the change in 4.12 where we started smoothing Z location rather than always zeroing it (in certain movement modes).
#udn https://udn.unrealengine.com/questions/300494/networked-crouching-jitter.html
Change 3032539 on 2016/06/29 by Marc.Audy
Don't destroy AudioDevices before draining audio commands and stopping audio thread
#jira UE-32611
Change 3032633 on 2016/06/29 by Marc.Audy
In the same way that SpawnActor doesn't work during world teardown, don't allow new components to be added which could introduce recursion within the destroy logic.
#jira UE-32574
Change 3032644 on 2016/06/29 by Lina.Halper
- Fixed issue where pose node evaluator doesn't show up in the menu with asset
- it showed twice of pose node (none) - jira UE-32358
- Fixed issue where anim evaluator/pose asset by name/blend space evaluator failed to display assets properly
- jira UE-32359
- support create pose menu from create asset - UE-32596
- added create pose asset from current pose
- update source should refresh list - UE-32576
- fixed blendspace to be in the blendspaces category
Change 3032847 on 2016/06/29 by Tom.Looman
Added PredictProjectilePath and SuggestProjectileVelocity_MediumArc utilities to UGameplayStatics.
Updated SuggestProjectileVelocity to avoid floating point precision errors on gravity value comparison.
#jira UE-32103
Change 3033124 on 2016/06/29 by Jon.Nabozny
Fix issue where InstancedStaticMeshComponent InstanceBodies don't move when the mesh is updated.
#JIRA: UE-13673
Change 3033155 on 2016/06/29 by Lina.Halper
- montage is playing and montage is pure
- made montage parameter to be mostly const (except play), and made it consistently pointer
Change 3033157 on 2016/06/29 by Lina.Halper
Check in missing file
Change 3033456 on 2016/06/29 by Lukasz.Furman
fixed path following changes broken by merge
#ue4
Change 3033956 on 2016/06/30 by bruce.nesbit
PR #2483: Fix/Improvment Move Component To Rotation (Contributed by Nachtmahr87)
#test PIE
Change 3034019 on 2016/06/30 by Benn.Gallagher
Anim blueprint sub-instances, allowing anim blueprints to run within anim blueprints and expose parameters back to the "parent" instance.
Caveats:
- Slots and state machine names are unique and boxed per instance, meaning playing a montage on a slot will only affect slots in the outermost instance and state machine getters are local to their instance.
#jira UEFW-1
Change 3034085 on 2016/06/30 by Benn.Gallagher
Missed LOCTEXT_NAMESPACE undefs from the subinstance checkin, for some reason doesn't get caught on windows, likely how the unity files are stuck together.
Change 3034162 on 2016/06/30 by Martin.Wilson
Refactor bone reference widget so that selection tree can be used seperately
Change 3034205 on 2016/06/30 by Lina.Halper
#ANIM: fix issue with addiitve blending with non-full weight applying wrong scale
#jira: UE-32643, UE-32593
Change 3034339 on 2016/06/30 by James.Golding
Moving functionality from Skeleton Curves tab into Anim Curve Viewer tab
Change 3034426 on 2016/06/30 by Martin.Wilson
CIS Fix
Change 3034629 on 2016/06/30 by Lina.Halper
Support non-zero curves to be stippred out upon importing
Change 3035863 on 2016/07/01 by Marc.Audy
When pasting components in to a blueprint, make the relative position and rotation of the root 0,0,0
#jira UE-31344
Change 3035916 on 2016/07/01 by Jon.Nabozny
Fixed PaperGroupedSprite doesn't update InstanceBodies data in physics. This change is related to CL-3033124
Change 3035973 on 2016/07/01 by Lukasz.Furman
fixed hash function for FRecastDebugPathfindingNode
#ue4
Change 3036024 on 2016/07/01 by Zak.Middleton
#ue4 - Avoid filling in array in AActor::FixupNativeActorComponents() unless we detect a null scene component. Avoid copying TWeakObjectPtr in ValidateDeferredTransformCache().
Change 3036157 on 2016/07/01 by Marc.Audy
Protect against running commands on game thread when the audio device has already been freed
#jira UE-32611
Change 3036178 on 2016/07/01 by Marc.Audy
Don't bitpack the gamethread specific boolean.
Change 3036906 on 2016/07/04 by bruce.nesbit
Fixed a typo in HasDefaultBuildSettings - (bCompi8leLeanAndMeanUE should be bCompileLeanAndMeanUE)
#tests Compiled
Change 3036929 on 2016/07/04 by James.Golding
UE-32405 Label Rotator components X/Y/Z instead of Roll/Pitch/Yaw
Change 3036930 on 2016/07/04 by James.Golding
UE-30414 Move constraint warnings to Message Log
Change 3036931 on 2016/07/04 by James.Golding
PR #2427: SkeletalMeshMerge now can transform the UVs of the source meshes. (Contributed by Bogustus)
Change 3037123 on 2016/07/04 by Ori.Cohen
Added physical animation preview in PhAT as well as physical animation profiles.
Change 3037420 on 2016/07/05 by Jurre.deBaare
Moved BodySetup_DEPRECATED out of WITH_EDITORONLY_DATA since it's being used in postload (fixes shipping builds)
#jira UE-32771
Change 3037702 on 2016/07/05 by Thomas.Sarkanen
Copying change 3037701 from Release-4.12:
Fixed crash when viewing uncompressed animation
Made sure that objects required by the animation evaluation are set up when performing game-thread side work in the editor.
#jira UE-32715 - Crash when selecting "show" > "uncompressed animation" in Persona
Change 3037837 on 2016/07/05 by Marc.Audy
sound stats will now still be displayed when creating a new audio device
#jira UE-32743
[CL 3038035 by Marc Audy in Main branch]
2016-07-05 14:25:57 -04:00
|
|
|
const FGameplayDebuggerInputHandlerConfig KeyConfig(TEXT("Toggle"), EKeys::Tab.GetFName());
|
|
|
|
|
bHasInputBinding = BindKeyPress(KeyConfig, this, &FGameplayDebuggerExtension_Spectator::ToggleSpectatorMode);
|
2016-02-24 14:23:53 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TSharedRef<FGameplayDebuggerExtension> FGameplayDebuggerExtension_Spectator::MakeInstance()
|
|
|
|
|
{
|
|
|
|
|
return MakeShareable(new FGameplayDebuggerExtension_Spectator());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FGameplayDebuggerExtension_Spectator::OnDeactivated()
|
|
|
|
|
{
|
|
|
|
|
if (SpectatorController.IsValid())
|
|
|
|
|
{
|
|
|
|
|
ToggleSpectatorMode();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FString FGameplayDebuggerExtension_Spectator::GetDescription() const
|
|
|
|
|
{
|
|
|
|
|
if (!bIsCachedDescriptionValid)
|
|
|
|
|
{
|
|
|
|
|
CachedDescription = !bHasInputBinding ? FString() :
|
|
|
|
|
FString::Printf(TEXT("{%s}%s:{%s}Spectator"),
|
|
|
|
|
*FGameplayDebuggerCanvasStrings::ColorNameInput,
|
|
|
|
|
*GetInputHandlerDescription(0),
|
|
|
|
|
SpectatorController.IsValid() ? *FGameplayDebuggerCanvasStrings::ColorNameEnabled : *FGameplayDebuggerCanvasStrings::ColorNameDisabled);
|
|
|
|
|
|
|
|
|
|
bIsCachedDescriptionValid = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return CachedDescription;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FGameplayDebuggerExtension_Spectator::ToggleSpectatorMode()
|
|
|
|
|
{
|
|
|
|
|
APlayerController* OwnerPC = GetPlayerController();
|
|
|
|
|
AGameplayDebuggerPlayerManager& PlayerManager = AGameplayDebuggerPlayerManager::GetCurrent(OwnerPC->GetWorld());
|
|
|
|
|
UInputComponent* DebuggerInput = PlayerManager.GetInputComponent(*OwnerPC);
|
|
|
|
|
|
|
|
|
|
ADebugCameraController* SpectatorControllerOb = SpectatorController.Get();
|
|
|
|
|
if (SpectatorControllerOb == nullptr)
|
|
|
|
|
{
|
|
|
|
|
FActorSpawnParameters SpawnInfo;
|
|
|
|
|
SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
|
|
|
|
|
SpawnInfo.Owner = OwnerPC->GetWorldSettings();
|
2019-09-29 16:49:10 -04:00
|
|
|
SpawnInfo.Instigator = OwnerPC->GetInstigator();
|
2016-02-24 14:23:53 -05:00
|
|
|
SpectatorControllerOb = OwnerPC->GetWorld()->SpawnActor<ADebugCameraController>(SpawnInfo);
|
|
|
|
|
|
|
|
|
|
if (SpectatorControllerOb)
|
|
|
|
|
{
|
|
|
|
|
OwnerPC->PopInputComponent(DebuggerInput);
|
|
|
|
|
SpectatorControllerOb->OnActivate(OwnerPC);
|
|
|
|
|
OwnerPC->Player->SwitchController(SpectatorControllerOb);
|
|
|
|
|
SpectatorControllerOb->PushInputComponent(DebuggerInput);
|
|
|
|
|
|
|
|
|
|
SpectatorControllerOb->ChangeState(NAME_Default);
|
|
|
|
|
SpectatorControllerOb->ChangeState(NAME_Spectating);
|
|
|
|
|
|
|
|
|
|
if (SpectatorControllerOb->MyHUD)
|
|
|
|
|
{
|
|
|
|
|
SpectatorControllerOb->MyHUD->bShowHUD = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SpectatorController = SpectatorControllerOb;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
SpectatorControllerOb->PopInputComponent(DebuggerInput);
|
2019-07-10 17:16:38 -04:00
|
|
|
if (SpectatorControllerOb->OriginalPlayer)
|
|
|
|
|
{
|
|
|
|
|
SpectatorControllerOb->OriginalPlayer->SwitchController(OwnerPC);
|
|
|
|
|
}
|
2016-02-24 14:23:53 -05:00
|
|
|
SpectatorControllerOb->OnDeactivate(OwnerPC);
|
|
|
|
|
OwnerPC->PushInputComponent(DebuggerInput);
|
|
|
|
|
|
|
|
|
|
SpectatorControllerOb->GetWorld()->DestroyActor(SpectatorControllerOb, false, false);
|
|
|
|
|
SpectatorController = nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bIsCachedDescriptionValid = false;
|
|
|
|
|
}
|