commiting Source folder. Got forgotten in previous commits

This commit is contained in:
2026-04-09 21:44:44 +02:00
parent 4338efdb30
commit 563df1ffc8
91 changed files with 6756 additions and 0 deletions

View File

@@ -0,0 +1,135 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "GWindow.h"
#include "GaeaSubsystem.h"
#include "WorldPartition/WorldPartitionSubsystem.h"
#include "PropertyEditorModule.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/Layout/SScrollBox.h"
DEFINE_LOG_CATEGORY(GaeaWindow)
SMCWindow::SMCWindow()
{
}
SMCWindow::~SMCWindow()
{
}
SGaeaImportWindow::SGaeaImportWindow()
{
}
SGaeaImportWindow::~SGaeaImportWindow()
{
if (ImporterSettings)
{
ImporterSettings->RemoveFromRoot();
ImporterSettings = nullptr;
}
}
void SGaeaImportWindow::Construct(const FArguments& InArgs)
{
CreateDetailsView();
SWindow::Construct(SWindow::FArguments()
.Title(InArgs._Title)
.ClientSize(InArgs._ClientSize)
.SizingRule(InArgs._SizingRule)
);
this->SetContent(SNew(SVerticalBox)
+ SVerticalBox::Slot()
.FillHeight(1)
[
SNew(SScrollBox)
+ SScrollBox::Slot()
[
PropertyWidget.ToSharedRef()
]
]
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Bottom)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.FillWidth(0.5)
[
SNew(SButton)
.Text(FText::FromString(("Import Heightmap")))
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.ButtonColorAndOpacity(FLinearColor::Gray)
.OnClicked(this, &SGaeaImportWindow::OnImportClicked)
]
+ SHorizontalBox::Slot()
.FillWidth(0.5)
[
SNew(SButton)
.Text(FText::FromString(("Create Landscape")))
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.IsEnabled_Lambda([this]() {return ImporterSettings != nullptr
&& !ImporterSettings->HeightMapFileName.IsEmpty()
&& (ImporterSettings->WeightmapFileNames.Num() == 0
|| ImporterSettings->LandscapeMaterialLayerNames.Num() == 0
|| ImporterSettings->WeightmapFileNames.Num() < ImporterSettings->LandscapeMaterialLayerNames.Num());})
.ButtonColorAndOpacity(FColor::Emerald)
.OnClicked(this, &SGaeaImportWindow::OnCreateLandscapeClicked)
]
]
);
}
void SGaeaImportWindow::CreateDetailsView()
{
FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
FDetailsViewArgs Args;
Args.bAllowSearch = false;
Args.bHideSelectionTip = true;
Args.bShowScrollBar = true;
ImporterSettings = NewObject<UImporterPanelSettings>();
ImporterSettings->AddToRoot();
PropertyWidget = PropertyModule.CreateDetailView(Args);
PropertyWidget->SetObject(ImporterSettings);
ImporterSettings->Components = FIntPoint(8,8);
ImporterSettings->Resolution = FIntPoint(505,505);
ImporterSettings->TotalComponents = ImporterSettings->Components.X * ImporterSettings->Components.Y;
}
FReply SGaeaImportWindow::OnImportClicked() const
{
if (UGaeaSubsystem* Manager = UGaeaSubsystem::GetGaeaSubsystem())
{
check(ImporterSettings != nullptr); // check if Importer Settings is valid
Manager->ImportHeightmap(ImporterSettings->HeightMapFileName, ImporterSettings->jsonFileName, ImporterSettings->Scale, ImporterSettings->Location, ImporterSettings->WeightmapFileNames, ImporterSettings->StoredPath); // Set heightmap path, json path and scale
UE_LOG(GaeaWindow, Display, TEXT("Heightmap file path is: %s"), *ImporterSettings->HeightMapFileName); // Log the heightmap file path
UE_LOG(GaeaWindow, Display, TEXT("Json file path is: %s"), *ImporterSettings->jsonFileName); // Log the heightmap file path
UE_LOG(GaeaWindow, Display, TEXT("Scale value is: %s"), *ImporterSettings->Scale.ToString()); // Log the scale
return FReply::Handled();
}
return FReply::Handled();
}
FReply SGaeaImportWindow::OnCreateLandscapeClicked()
{
if (UGaeaSubsystem* Manager = UGaeaSubsystem::GetGaeaSubsystem())
{
Manager->CreateLandscapeActor(ImporterSettings);
return FReply::Handled();
}
return FReply::Handled();
}