高级编辑器
This commit is contained in:
parent
87eb0430f6
commit
4e1550bdf3
@ -778,9 +778,8 @@ struct CUT5_API FTimelineInfo
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CUT5_API FEffectCardProperty
|
struct CUT5_API CutPropertyInterface
|
||||||
{
|
{
|
||||||
FEffectCardProperty() {};
|
|
||||||
FGuid Guid = FGuid::NewGuid();
|
FGuid Guid = FGuid::NewGuid();
|
||||||
FString Name = "";
|
FString Name = "";
|
||||||
FTimelineInfo TimelineInfo;
|
FTimelineInfo TimelineInfo;
|
||||||
@ -789,6 +788,38 @@ struct CUT5_API FEffectCardProperty
|
|||||||
TArray<FStringWithGUID> UsedCurtains;
|
TArray<FStringWithGUID> UsedCurtains;
|
||||||
FStringWithGUID JumpStepCurtains;
|
FStringWithGUID JumpStepCurtains;
|
||||||
bool IsGlobal = true;
|
bool IsGlobal = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class ECardType
|
||||||
|
{
|
||||||
|
EffectCard = 0,
|
||||||
|
StepCard = 1,
|
||||||
|
GroupEffectCard = 2,
|
||||||
|
GroupStepCard = 3,
|
||||||
|
IDCard = 4,
|
||||||
|
JumpCard = 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CUT5_API FCardRule
|
||||||
|
{
|
||||||
|
FGuid Guid = FGuid::NewGuid();
|
||||||
|
ECardType CardRuleType = ECardType::EffectCard;
|
||||||
|
|
||||||
|
FGuid InCardGuid;
|
||||||
|
|
||||||
|
friend FArchive& operator<<(FArchive& Ar, FCardRule& CardRule)
|
||||||
|
{
|
||||||
|
Ar << CardRule.Guid;
|
||||||
|
Ar << CardRule.CardRuleType;
|
||||||
|
Ar << CardRule.InCardGuid;
|
||||||
|
return Ar;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CUT5_API FEffectCardProperty : public CutPropertyInterface
|
||||||
|
{
|
||||||
|
FEffectCardProperty() {};
|
||||||
|
|
||||||
|
|
||||||
bool IsClone = false;
|
bool IsClone = false;
|
||||||
friend FArchive& operator<<(FArchive& Ar, FEffectCardProperty& EffectCardProperty)
|
friend FArchive& operator<<(FArchive& Ar, FEffectCardProperty& EffectCardProperty)
|
||||||
@ -810,7 +841,7 @@ struct CUT5_API FEffectCardProperty
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CUT5_API FEffectCardGroup
|
struct CUT5_API FEffectCardGroup : public CutPropertyInterface
|
||||||
{
|
{
|
||||||
FString GroupName;
|
FString GroupName;
|
||||||
TArray<FEffectCardProperty> Cards;
|
TArray<FEffectCardProperty> Cards;
|
||||||
@ -818,12 +849,8 @@ struct CUT5_API FEffectCardGroup
|
|||||||
bool bCanEditName = false;
|
bool bCanEditName = false;
|
||||||
bool bIsExpanded = true;
|
bool bIsExpanded = true;
|
||||||
bool bIsActive = false;
|
bool bIsActive = false;
|
||||||
FGuid Guid = FGuid::NewGuid();
|
|
||||||
FTimelineInfo TimelineInfo;
|
FTimelineInfo TimelineInfo;
|
||||||
int32 ID = 0;
|
int32 ID = 0;
|
||||||
TArray<FStringWithGUID> UsedCurtains;
|
|
||||||
FStringWithGUID JumpStepCurtains;
|
|
||||||
bool IsGlobal = true;
|
|
||||||
|
|
||||||
friend FArchive& operator<<(FArchive& Ar, FEffectCardGroup& EffectCard)
|
friend FArchive& operator<<(FArchive& Ar, FEffectCardGroup& EffectCard)
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "SEffectCard.h"
|
#include "SEffectCard.h"
|
||||||
|
|
||||||
|
#include "SEffectCardAdvanceEditor.h"
|
||||||
#include "SEffectCardGroup.h"
|
#include "SEffectCardGroup.h"
|
||||||
#include "SEffectCardsPanel.h"
|
#include "SEffectCardsPanel.h"
|
||||||
#include "SlateOptMacros.h"
|
#include "SlateOptMacros.h"
|
||||||
@ -661,8 +662,51 @@ TSharedPtr<SWidget> SEffectCard::GetPropertiesWidget()
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
]
|
||||||
|
+ SVerticalBox::Slot()
|
||||||
|
.SizeParam(FAuto())
|
||||||
|
.Padding(0, 13, 0, 0)
|
||||||
|
[
|
||||||
|
SNew(SBox).HeightOverride(32).WidthOverride(214)
|
||||||
|
[
|
||||||
|
SNew(SHorizontalBox)
|
||||||
|
+ SHorizontalBox::Slot()
|
||||||
|
.SizeParam(FAuto())
|
||||||
|
.VAlign(VAlign_Center)
|
||||||
|
[
|
||||||
|
SNew(SBox)
|
||||||
|
.WidthOverride(62)
|
||||||
|
.HeightOverride(32)
|
||||||
|
.VAlign(VAlign_Center)
|
||||||
|
[
|
||||||
|
SNew(STextBlock)
|
||||||
|
.Text(FText::FromString(TEXT("高级")))
|
||||||
|
.Font(NormalText.Font)
|
||||||
|
.Justification(ETextJustify::Center)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
+ SHorizontalBox::Slot()
|
||||||
|
.SizeParam(FAuto())
|
||||||
|
.HAlign(HAlign_Right)
|
||||||
|
[
|
||||||
|
SNew(SBox)
|
||||||
|
.WidthOverride(136)
|
||||||
|
.HeightOverride(32)
|
||||||
|
[
|
||||||
|
SNew(SButton)
|
||||||
|
.Text(FText::FromString(TEXT("打开高级编辑器")))
|
||||||
|
.OnClicked_Lambda([this]()
|
||||||
|
{
|
||||||
|
TSharedPtr<SEffectCardAdvanceEditor> AdvanceEditor;
|
||||||
|
SAssignNew(AdvanceEditor, SEffectCardAdvanceEditor);
|
||||||
|
GEngine->GameViewport->AddViewportWidgetContent(AdvanceEditor.ToSharedRef());
|
||||||
|
|
||||||
|
return FReply::Handled();
|
||||||
|
})
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
return PropertiesWidget;
|
return PropertiesWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
50
Source/Cut5/Widgets/FX/SEffectCardAdvanceEditor.cpp
Normal file
50
Source/Cut5/Widgets/FX/SEffectCardAdvanceEditor.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "SEffectCardAdvanceEditor.h"
|
||||||
|
|
||||||
|
#include "SlateOptMacros.h"
|
||||||
|
#include "Cut5/Utils/Utils.h"
|
||||||
|
|
||||||
|
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
||||||
|
|
||||||
|
void SEffectCardAdvanceEditor::Construct(const FArguments& InArgs)
|
||||||
|
{
|
||||||
|
|
||||||
|
ChildSlot
|
||||||
|
[
|
||||||
|
SNew(SOverlay)
|
||||||
|
+ SOverlay::Slot()
|
||||||
|
.HAlign(HAlign_Center)
|
||||||
|
.VAlign(VAlign_Center)
|
||||||
|
[
|
||||||
|
SNew(SBox)
|
||||||
|
.WidthOverride(800)
|
||||||
|
.HeightOverride(1000)
|
||||||
|
[
|
||||||
|
SNew(SImage)
|
||||||
|
.Image(FUtils::GetBrushFromImage(FUtils::GetResourcesPath("CharacterGroup.png"), {320, 445}))
|
||||||
|
]
|
||||||
|
]
|
||||||
|
+ SOverlay::Slot()
|
||||||
|
.HAlign(HAlign_Right)
|
||||||
|
.VAlign(VAlign_Top)
|
||||||
|
[
|
||||||
|
SNew(SBox)
|
||||||
|
.WidthOverride(32)
|
||||||
|
.HeightOverride(32)
|
||||||
|
[
|
||||||
|
SNew(SImage)
|
||||||
|
.Image(FUtils::GetBrushFromImage(FUtils::GetResourcesPath("ColorPanelClose.png"), {32, 32}))
|
||||||
|
.OnMouseButtonDown_Lambda([this](const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)
|
||||||
|
{
|
||||||
|
GEngine->GameViewport->RemoveViewportWidgetContent(SharedThis(this));
|
||||||
|
return FReply::Handled();
|
||||||
|
})
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
24
Source/Cut5/Widgets/FX/SEffectCardAdvanceEditor.h
Normal file
24
Source/Cut5/Widgets/FX/SEffectCardAdvanceEditor.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Widgets/SCompoundWidget.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class CUT5_API SEffectCardAdvanceEditor : public SCompoundWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SLATE_BEGIN_ARGS(SEffectCardAdvanceEditor)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SLATE_END_ARGS()
|
||||||
|
|
||||||
|
/** Constructs this widget with InArgs */
|
||||||
|
void Construct(const FArguments& InArgs);
|
||||||
|
|
||||||
|
|
||||||
|
};
|
@ -658,7 +658,7 @@ int32 STimelineClip::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGe
|
|||||||
{
|
{
|
||||||
const FSlateBrush Brush;
|
const FSlateBrush Brush;
|
||||||
|
|
||||||
float DownSample = 4;
|
float DownSample = 2;
|
||||||
|
|
||||||
// Draw Audio Waveform
|
// Draw Audio Waveform
|
||||||
|
|
||||||
@ -669,14 +669,15 @@ int32 STimelineClip::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGe
|
|||||||
const float RangeEnd = MainWidgetInterface->GetSelf()->GetCachedGeometry().GetLocalSize().X;
|
const float RangeEnd = MainWidgetInterface->GetSelf()->GetCachedGeometry().GetLocalSize().X;
|
||||||
|
|
||||||
// MainWidgetInterface->GetCutTimeline()->TimelineMainContentVerticalBox->GetCachedGeometry().GetLocalSize().X;
|
// MainWidgetInterface->GetCutTimeline()->TimelineMainContentVerticalBox->GetCachedGeometry().GetLocalSize().X;
|
||||||
const float CurrentStartRange = AllottedGeometry.GetAbsolutePosition().X;
|
const float CurrentStartRange = MainWidgetInterface->GetSelf()->GetCachedGeometry().AbsoluteToLocal(
|
||||||
|
AllottedGeometry.GetAbsolutePosition()).X;
|
||||||
const float CurrentEndRange = AllottedGeometry.LocalToAbsolute(FVector2D(AllottedGeometry.GetLocalSize().X, 0)).X;
|
const float CurrentEndRange = AllottedGeometry.LocalToAbsolute(FVector2D(AllottedGeometry.GetLocalSize().X, 0)).X;
|
||||||
|
|
||||||
// GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Red, FString::FromInt(CurrentStartRange));
|
GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Red, FString::FromInt(CurrentStartRange));
|
||||||
// GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Yellow, FString::FromInt(CurrentEndRange));
|
GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Yellow, FString::FromInt(CurrentEndRange));
|
||||||
// GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Green, FString::FromInt(RangeStart));
|
GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Green, FString::FromInt(RangeStart));
|
||||||
// GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Blue, FString::FromInt(RangeEnd));
|
GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Blue, FString::FromInt(RangeEnd));
|
||||||
//
|
|
||||||
|
|
||||||
int32 CropStartFrameOffset = ((CurrentStartRange * -1) + RangeStart > 0 ? (CurrentStartRange * -1) + RangeStart : 0) / FGlobalData::DefaultTimeTickSpace;
|
int32 CropStartFrameOffset = ((CurrentStartRange * -1) + RangeStart > 0 ? (CurrentStartRange * -1) + RangeStart : 0) / FGlobalData::DefaultTimeTickSpace;
|
||||||
if (CurrentEndRange < RangeStart)
|
if (CurrentEndRange < RangeStart)
|
||||||
|
Loading…
Reference in New Issue
Block a user