You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
StateTree: Fixed ID clash when duplicating transitions, plus misc editor fixes
- Fix duplicate state - Fix creating new node IDs when a whole transitions is duplicated - Fixed state ID leaking into state names, when ID debug display is on - Fixed updating the state tree view when task type is changed [FYI] yoan.stamant [CL 26145413 by mikko mononen in ue5-main branch]
This commit is contained in:
@@ -242,8 +242,38 @@ void FStateTreeTransitionDetails::OnCopyTransition() const
|
||||
}
|
||||
}
|
||||
|
||||
UStateTreeEditorData* FStateTreeTransitionDetails::GetEditorData() const
|
||||
{
|
||||
TArray<UObject*> OuterObjects;
|
||||
StructProperty->GetOuterObjects(OuterObjects);
|
||||
for (UObject* Outer : OuterObjects)
|
||||
{
|
||||
UStateTreeEditorData* OuterEditorData = Cast<UStateTreeEditorData>(Outer);
|
||||
if (OuterEditorData == nullptr)
|
||||
{
|
||||
OuterEditorData = Outer->GetTypedOuter<UStateTreeEditorData>();
|
||||
}
|
||||
if (OuterEditorData)
|
||||
{
|
||||
return OuterEditorData;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void FStateTreeTransitionDetails::OnPasteTransition() const
|
||||
{
|
||||
UStateTreeEditorData* EditorData = GetEditorData();
|
||||
if (!EditorData)
|
||||
{
|
||||
return;
|
||||
}
|
||||
FStateTreeEditorPropertyBindings* Bindings = EditorData->GetPropertyEditorBindings();
|
||||
if (!Bindings)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FString PastedText;
|
||||
FPlatformApplicationMisc::ClipboardPaste(PastedText);
|
||||
|
||||
@@ -267,6 +297,16 @@ void FStateTreeTransitionDetails::OnPasteTransition() const
|
||||
if (FStateTreeTransition* Transition = static_cast<FStateTreeTransition*>(RawData[Index]))
|
||||
{
|
||||
Transition->ID = FGuid::NewGuid();
|
||||
|
||||
for (FStateTreeEditorNode& Condition : Transition->Conditions)
|
||||
{
|
||||
const FGuid OldStructID = Condition.ID;
|
||||
Condition.ID = FGuid::NewGuid();
|
||||
if (OldStructID.IsValid())
|
||||
{
|
||||
Bindings->CopyBindings(OldStructID, Condition.ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,7 @@ class IPropertyHandle;
|
||||
class IPropertyUtilities;
|
||||
class IDetailChildrenBuilder;
|
||||
class FDetailWidgetRow;
|
||||
class UStateTree;
|
||||
class UStateTreeState;
|
||||
class UStateTreeEditorData;
|
||||
enum class EStateTreeTransitionTrigger : uint8;
|
||||
|
||||
/**
|
||||
@@ -28,6 +27,8 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
UStateTreeEditorData* GetEditorData() const;
|
||||
|
||||
FText GetDescription() const;
|
||||
|
||||
EStateTreeTransitionTrigger GetTrigger() const;
|
||||
|
||||
Reference in New Issue
Block a user