Skip to content

Commit

Permalink
Simplify import option
Browse files Browse the repository at this point in the history
  • Loading branch information
mik14a committed May 2, 2016
1 parent e5882b5 commit 2989e5d
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 38 deletions.
6 changes: 1 addition & 5 deletions Source/VOX4UEditor/Private/Vox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,11 +234,7 @@ bool FVox::CreateRawMesh(FRawMesh& OutRawMesh, const UVoxImportOption* ImportOpt
TArray<uint32> VertexPositionIndex;
for (int VertexIndex = 0; VertexIndex < 4; ++VertexIndex) {
FVector v = Origin + Vertexes[Faces[FaceIndex][VertexIndex]];
int32 vpi;
if (!ImportOption->bMergeVertexes
|| INDEX_NONE == (vpi = OutRawMesh.VertexPositions.IndexOfByKey(v))) {
vpi = OutRawMesh.VertexPositions.Add(v);
}
int32 vpi = OutRawMesh.VertexPositions.AddUnique(v);
VertexPositionIndex.Add(vpi);
}

Expand Down
7 changes: 3 additions & 4 deletions Source/VOX4UEditor/Private/VoxImportOption.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@ UVoxImportOption::UVoxImportOption()
: VoxImportType(EVoxImportType::StaticMesh)
, bImportXForward(true)
, bImportXYCenter(true)
, bMergeVertexes(true)
, Material(nullptr)
, Mesh(nullptr)
, Scale(10.f)
{
BuildSettings.bUseMikkTSpace = false;
BuildSettings.BuildScale3D = FVector(10.f);
BuildSettings.BuildScale3D = FVector(Scale);
}

bool UVoxImportOption::GetImportOption(bool& bOutImportAll)
Expand All @@ -37,6 +35,7 @@ bool UVoxImportOption::GetImportOption(bool& bOutImportAll)
FSlateApplication::Get().AddModalWindow(Window, ParentWindow, false);
SaveConfig();

BuildSettings.BuildScale3D = FVector(Scale);
bOutImportAll = VoxOptionWidget->ShouldImportAll();

return VoxOptionWidget->ShouldImport();
Expand Down
21 changes: 10 additions & 11 deletions Source/VOX4UEditor/Private/VoxImportOption.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,21 @@ class UVoxImportOption : public UObject
UPROPERTY(EditAnywhere, Category = Generic)
uint32 bImportXYCenter : 1;

UPROPERTY(EditAnywhere, Category = StaticMesh)
FMeshBuildSettings BuildSettings;

UPROPERTY(EditAnywhere, Category = "StaticMesh|DestructibleMesh")
uint32 bMergeVertexes : 1;

UPROPERTY(EditAnywhere, Category = "StaticMesh|DestructibleMesh")
class UMaterialInterface* Material;

UPROPERTY(EditAnywhere, Category = "Voxel")
class UStaticMesh* Mesh;
UPROPERTY(EditAnywhere, Category = Generic)
float Scale;

public:

UVoxImportOption();

bool GetImportOption(bool& bOutImportAll);

const FMeshBuildSettings& GetBuildSettings() const {
return BuildSettings;
}

private:

FMeshBuildSettings BuildSettings;

};
31 changes: 13 additions & 18 deletions Source/VOX4UEditor/Private/VoxelFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ UVoxel* UVoxelFactory::CreateVoxel(UObject* InParent, FName InName, EObjectFlags
StaticMesh->Materials.Add(MaterialInstance);
BuildStaticMesh(StaticMesh, RawMesh);

const FVector& Scale = ImportOption->BuildSettings.BuildScale3D;
const FVector& Scale = ImportOption->GetBuildSettings().BuildScale3D;
FKBoxElem BoxElem(Scale.X, Scale.Y, Scale.Z);
StaticMesh->BodySetup->AggGeom.BoxElems.Add(BoxElem);

Expand All @@ -186,7 +186,7 @@ UStaticMesh* UVoxelFactory::BuildStaticMesh(UStaticMesh* OutStaticMesh, FRawMesh
{
check(OutStaticMesh);
FStaticMeshSourceModel* StaticMeshSourceModel = new(OutStaticMesh->SourceModels) FStaticMeshSourceModel();
StaticMeshSourceModel->BuildSettings = ImportOption->BuildSettings;
StaticMeshSourceModel->BuildSettings = ImportOption->GetBuildSettings();
StaticMeshSourceModel->RawMeshBulkData->SaveRawMesh(RawMesh);
TArray<FText> Errors;
OutStaticMesh->Build(false, &Errors);
Expand All @@ -195,21 +195,16 @@ UStaticMesh* UVoxelFactory::BuildStaticMesh(UStaticMesh* OutStaticMesh, FRawMesh

UMaterialInterface* UVoxelFactory::CreateMaterial(UObject* InParent, FName &InName, EObjectFlags Flags, const FVox* Vox) const
{
UMaterialInterface* Material = ImportOption->Material ? ImportOption->Material : [&] {
UMaterialInterface* MaterialInterface = nullptr;
UTexture2D* Texture = NewObject<UTexture2D>(InParent, *FString::Printf(TEXT("%s_TX"), *InName.GetPlainNameString()), Flags | RF_Public);
if (Vox->CreateTexture(Texture, ImportOption)) {
UMaterial* Material = NewObject<UMaterial>(InParent, *FString::Printf(TEXT("%s_MT"), *InName.GetPlainNameString()), Flags | RF_Public);
Material->TwoSided = false;
Material->SetShadingModel(MSM_DefaultLit);
UMaterialExpressionTextureSample* Expression = NewObject<UMaterialExpressionTextureSample>(Material);
Material->Expressions.Add(Expression);
Material->BaseColor.Expression = Expression;
Expression->Texture = Texture;
Material->PostEditChange();
MaterialInterface = Material;
}
return MaterialInterface ? MaterialInterface : UMaterial::GetDefaultMaterial(MD_Surface);
}();
UMaterial* Material = NewObject<UMaterial>(InParent, *FString::Printf(TEXT("%s_MT"), *InName.GetPlainNameString()), Flags | RF_Public);
UTexture2D* Texture = NewObject<UTexture2D>(InParent, *FString::Printf(TEXT("%s_TX"), *InName.GetPlainNameString()), Flags | RF_Public);
if (Vox->CreateTexture(Texture, ImportOption)) {
Material->TwoSided = false;
Material->SetShadingModel(MSM_DefaultLit);
UMaterialExpressionTextureSample* Expression = NewObject<UMaterialExpressionTextureSample>(Material);
Material->Expressions.Add(Expression);
Material->BaseColor.Expression = Expression;
Expression->Texture = Texture;
Material->PostEditChange();
}
return Material;
}

0 comments on commit 2989e5d

Please sign in to comment.