添加生成内容次数配置
This commit is contained in:
parent
b7b1944729
commit
9a9675fa6d
@ -28,6 +28,9 @@ public class AIGC : ModuleRules
|
|||||||
{
|
{
|
||||||
"Core",
|
"Core",
|
||||||
// ... add other public dependencies that you statically link with here ...
|
// ... add other public dependencies that you statically link with here ...
|
||||||
|
"SlateCore",
|
||||||
|
"Slate",
|
||||||
|
"InputCore"
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -37,8 +40,7 @@ public class AIGC : ModuleRules
|
|||||||
{
|
{
|
||||||
"CoreUObject",
|
"CoreUObject",
|
||||||
"Engine",
|
"Engine",
|
||||||
"Slate",
|
|
||||||
"SlateCore",
|
|
||||||
// ... add private dependencies that you statically link with here ...
|
// ... add private dependencies that you statically link with here ...
|
||||||
"EditorStyle",
|
"EditorStyle",
|
||||||
"ToolMenus",
|
"ToolMenus",
|
||||||
|
@ -46,7 +46,7 @@ void UWebSocketManager::HandleConnectionError(const FString& ErrorReason)
|
|||||||
|
|
||||||
void UWebSocketManager::HandleOnMessageSend(const FString& Message)
|
void UWebSocketManager::HandleOnMessageSend(const FString& Message)
|
||||||
{
|
{
|
||||||
UE_LOG(LogTemp, Warning, TEXT("Send Text %s to WebSocket Server "), *Message);
|
//UE_LOG(LogTemp, Warning, TEXT("Send Text %s to WebSocket Server "), *Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UWebSocketManager::HandleOnReceiveText(const FString& Message)
|
void UWebSocketManager::HandleOnReceiveText(const FString& Message)
|
||||||
|
@ -19,7 +19,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(ServerIP, SConfigItemWidget)
|
SAssignNew(ServerIP, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("Server", "服务器ip"))
|
.Title(LOCTEXT("Server", "服务器ip"))
|
||||||
.HintText(LOCTEXT("HintServer", "请输入服务器ip"))
|
.HintText(LOCTEXT("HintServer", "请输入服务器ip"))
|
||||||
.DefaultText(LOCTEXT("InputServer", "127.0.0.1"))
|
.DefaultText(LOCTEXT("InputServer", "127.0.0.1"))
|
||||||
@ -28,7 +28,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(DataName, SConfigItemWidget)
|
SAssignNew(DataName, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("DataName", "配表名称"))
|
.Title(LOCTEXT("DataName", "配表名称"))
|
||||||
.HintText(LOCTEXT("HintDataName", "请输入配表名称"))
|
.HintText(LOCTEXT("HintDataName", "请输入配表名称"))
|
||||||
]
|
]
|
||||||
@ -36,7 +36,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(NPCName1, SConfigItemWidget)
|
SAssignNew(NPCName1, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("Name1", "名称1"))
|
.Title(LOCTEXT("Name1", "名称1"))
|
||||||
.HintText(LOCTEXT("HintName", "请输入名称"))
|
.HintText(LOCTEXT("HintName", "请输入名称"))
|
||||||
]
|
]
|
||||||
@ -44,7 +44,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(NPCJob1, SConfigItemWidget)
|
SAssignNew(NPCJob1, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("Job1", "职业1"))
|
.Title(LOCTEXT("Job1", "职业1"))
|
||||||
.HintText(LOCTEXT("HintJon", "请输入职业"))
|
.HintText(LOCTEXT("HintJon", "请输入职业"))
|
||||||
]
|
]
|
||||||
@ -52,7 +52,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(NPCName2, SConfigItemWidget)
|
SAssignNew(NPCName2, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("Name2", "名称2"))
|
.Title(LOCTEXT("Name2", "名称2"))
|
||||||
.HintText(LOCTEXT("HintName", "请输入名称"))
|
.HintText(LOCTEXT("HintName", "请输入名称"))
|
||||||
]
|
]
|
||||||
@ -61,7 +61,7 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(NPCJob2, SConfigItemWidget)
|
SAssignNew(NPCJob2, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("Job2", "职业2"))
|
.Title(LOCTEXT("Job2", "职业2"))
|
||||||
.HintText(LOCTEXT("HintJon", "请输入职业"))
|
.HintText(LOCTEXT("HintJon", "请输入职业"))
|
||||||
]
|
]
|
||||||
@ -69,10 +69,19 @@ void SAIGCWindow::Construct(const FArguments& InArgs)
|
|||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
[
|
[
|
||||||
SAssignNew(DialogScene, SConfigItemWidget)
|
SAssignNew(DialogScene, SConfigItem_Text)
|
||||||
.Title(LOCTEXT("DialogScene", "对话场景"))
|
.Title(LOCTEXT("DialogScene", "对话场景"))
|
||||||
.HintText(LOCTEXT("HintDialogScene", "请输入对话场景"))
|
.HintText(LOCTEXT("HintDialogScene", "请输入对话场景"))
|
||||||
]
|
]
|
||||||
|
+ SVerticalBox::Slot()
|
||||||
|
.AutoHeight()
|
||||||
|
.Padding(10)
|
||||||
|
[
|
||||||
|
SAssignNew(GenerateCount, SConfigItem_NumberSpin<int32>)
|
||||||
|
.Title(LOCTEXT("GenerateCount", "生成数量"))
|
||||||
|
.MinNumber(1)
|
||||||
|
.MaxNumber(99)
|
||||||
|
]
|
||||||
+ SVerticalBox::Slot()
|
+ SVerticalBox::Slot()
|
||||||
.AutoHeight()
|
.AutoHeight()
|
||||||
.Padding(10)
|
.Padding(10)
|
||||||
@ -111,23 +120,43 @@ EActiveTimerReturnType SAIGCWindow::OnPostPaint(double X, float Arg)
|
|||||||
void SAIGCWindow::OnAIGenerateClicked()
|
void SAIGCWindow::OnAIGenerateClicked()
|
||||||
{
|
{
|
||||||
GenerateButton->SetEnabled(false);
|
GenerateButton->SetEnabled(false);
|
||||||
|
RequireGenerateCount = GenerateCount->GetNumber();
|
||||||
|
UE_LOG(LogTemp, Warning, TEXT("生成次数 %d prompt:%s"), RequireGenerateCount, *GeneratePromptJson());
|
||||||
WebSocketManager->SendData(GeneratePromptJson());
|
WebSocketManager->SendData(GeneratePromptJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SAIGCWindow::HandleReceiveData(TArray<FString> AiMessages)
|
void SAIGCWindow::HandleReceiveData(TArray<FString> AiMessages)
|
||||||
{
|
{
|
||||||
GenerateButton->SetEnabled(true);
|
UE_LOG(LogTemp, Warning, TEXT("AI当前进度 %d/%d"), GeneratedCount, RequireGenerateCount);
|
||||||
FAIGCModule* ModulePtr = FModuleManager::GetModulePtr<FAIGCModule>("AIGC");
|
//添加数据到dataTable中
|
||||||
if (ModulePtr) {
|
if (AiMessages.Num() > 0)
|
||||||
FString DataPath = FString::Printf(TEXT("/Game/Test/%s.%s"), *DataName->GetInputText(), *DataName->GetInputText());
|
{
|
||||||
FString Final = "";
|
FAIGCModule* ModulePtr = FModuleManager::GetModulePtr<FAIGCModule>("AIGC");
|
||||||
for (auto message: AiMessages)
|
if (ModulePtr) {
|
||||||
{
|
FString DataPath = FString::Printf(TEXT("/Game/Test/%s.%s"), *DataName->GetInputText(), *DataName->GetInputText());
|
||||||
Final += message + TEXT("|");
|
FString Final = "";
|
||||||
|
for (auto message: AiMessages)
|
||||||
|
{
|
||||||
|
Final += message + TEXT("|");
|
||||||
|
}
|
||||||
|
ModulePtr->CreateOrAddData(DataPath, Final);
|
||||||
}
|
}
|
||||||
ModulePtr->CreateOrAddData(DataPath, Final);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//是否生成足够数量
|
||||||
|
if (GeneratedCount < RequireGenerateCount)
|
||||||
|
{
|
||||||
|
GeneratedCount++;
|
||||||
|
WebSocketManager->SendData(GeneratePromptJson());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GeneratedCount = 0;
|
||||||
|
GenerateButton->SetEnabled(true);
|
||||||
|
UE_LOG(LogTemp, Warning, TEXT("生成结束!"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FString SAIGCWindow::GeneratePromptJson()
|
FString SAIGCWindow::GeneratePromptJson()
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "Widget/ConfigItem_NumberSpin.h"
|
||||||
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
#include "Widget/ConfigItemWidget.h"
|
#include "Widget/ConfigItem_Text.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void SConfigItemWidget::Construct(const FArguments& InArgs)
|
void SConfigItem_Text::Construct(const FArguments& InArgs)
|
||||||
{
|
{
|
||||||
InputText = InArgs._DefaultText.ToString();
|
InputText = InArgs._DefaultText.ToString();
|
||||||
ChildSlot[
|
ChildSlot[
|
@ -3,7 +3,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "ConfigItemWidget.h"
|
#include "ConfigItem_NumberSpin.h"
|
||||||
|
#include "ConfigItem_Text.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -25,15 +26,17 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
FString GeneratePromptJson();
|
FString GeneratePromptJson();
|
||||||
|
int32 RequireGenerateCount;
|
||||||
|
int32 GeneratedCount = 1;
|
||||||
protected:
|
protected:
|
||||||
TSharedPtr<SConfigItemWidget> ServerIP; //服务器IP
|
TSharedPtr<SConfigItem_Text> ServerIP; //服务器IP
|
||||||
TSharedPtr<SConfigItemWidget> DataName; //datatable 名称
|
TSharedPtr<SConfigItem_Text> DataName; //datatable 名称
|
||||||
TSharedPtr<SConfigItemWidget> NPCName1; //npc1的名称
|
TSharedPtr<SConfigItem_Text> NPCName1; //npc1的名称
|
||||||
TSharedPtr<SConfigItemWidget> NPCJob1; //npc1的职业
|
TSharedPtr<SConfigItem_Text> NPCJob1; //npc1的职业
|
||||||
TSharedPtr<SConfigItemWidget> NPCName2; //npc2的名称
|
TSharedPtr<SConfigItem_Text> NPCName2; //npc2的名称
|
||||||
TSharedPtr<SConfigItemWidget> NPCJob2; //npc2的职业
|
TSharedPtr<SConfigItem_Text> NPCJob2; //npc2的职业
|
||||||
TSharedPtr<SConfigItemWidget> DialogScene; //对话场景
|
TSharedPtr<SConfigItem_Text> DialogScene; //对话场景
|
||||||
|
TSharedPtr<SConfigItem_NumberSpin<int32>> GenerateCount; //生成数目
|
||||||
TSharedPtr<SButton> GenerateButton; //生成按钮
|
TSharedPtr<SButton> GenerateButton; //生成按钮
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Widgets/Input/SNumericEntryBox.h"
|
||||||
|
#include "Framework/Application/SlateApplication.h"
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template <typename NumericType>
|
||||||
|
class AIGC_API SConfigItem_NumberSpin : public SCompoundWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SLATE_BEGIN_ARGS(SConfigItem_NumberSpin)
|
||||||
|
: _Title()
|
||||||
|
, _MinNumber()
|
||||||
|
, _MaxNumber()
|
||||||
|
{}
|
||||||
|
SLATE_ARGUMENT(FText, Title) // 标题参数
|
||||||
|
SLATE_ARGUMENT(NumericType, MinNumber) // 最小范围
|
||||||
|
SLATE_ARGUMENT(NumericType, MaxNumber) // 最大范围
|
||||||
|
|
||||||
|
SLATE_END_ARGS()
|
||||||
|
|
||||||
|
void Construct(const FArguments& InArgs)
|
||||||
|
{
|
||||||
|
ChildSlot
|
||||||
|
[
|
||||||
|
SNew(SHorizontalBox)
|
||||||
|
+ SHorizontalBox::Slot()
|
||||||
|
.AutoWidth()
|
||||||
|
.Padding(10, 0)
|
||||||
|
[
|
||||||
|
SNew(STextBlock)
|
||||||
|
.Text(InArgs._Title)
|
||||||
|
]
|
||||||
|
+ SHorizontalBox::Slot()
|
||||||
|
.FillWidth(1.0f)
|
||||||
|
.Padding(10, 0)
|
||||||
|
[
|
||||||
|
SNew(SNumericEntryBox<NumericType>)
|
||||||
|
.AllowSpin(true)
|
||||||
|
.MinValue(InArgs._MinNumber)
|
||||||
|
.MaxValue(InArgs._MaxNumber)
|
||||||
|
.MinSliderValue(InArgs._MinNumber)
|
||||||
|
.MaxSliderValue(InArgs._MaxNumber)
|
||||||
|
.Value(InArgs._MinNumber)
|
||||||
|
.Delta(1)
|
||||||
|
.Value_Lambda([this, InArgs]() { return FMath::Max(InArgs._MinNumber, InputValue); })
|
||||||
|
.OnValueChanged(this, &SConfigItem_NumberSpin::OnValueChanged)
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
NumericType GetNumber() const { return InputValue; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void OnValueChanged(NumericType NewValue)
|
||||||
|
{
|
||||||
|
UE_LOG(LogTemp, Display, TEXT("OnValueChanged newvalue = %d"), (int32)NewValue);
|
||||||
|
InputValue = NewValue;
|
||||||
|
Invalidate(EInvalidateWidget::Layout);
|
||||||
|
}
|
||||||
|
NumericType InputValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
// template <typename NumericType>
|
||||||
|
// void SConfigItem_NumberSpin<NumericType>::Construct(const FArguments& InArgs)
|
||||||
|
// {
|
||||||
|
// }
|
||||||
|
|
@ -7,9 +7,9 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class SConfigItemWidget : public SCompoundWidget {
|
class AIGC_API SConfigItem_Text : public SCompoundWidget {
|
||||||
public:
|
public:
|
||||||
SLATE_BEGIN_ARGS(SConfigItemWidget)
|
SLATE_BEGIN_ARGS(SConfigItem_Text)
|
||||||
: _Title()
|
: _Title()
|
||||||
, _HintText()
|
, _HintText()
|
||||||
, _DefaultText()
|
, _DefaultText()
|
Loading…
x
Reference in New Issue
Block a user