104 lines
3.2 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "Factories/Factory.h"
#include "Materials/MaterialInterface.h"
#include "MujocoFactory.generated.h"
enum class EMujocoOrientationType : uint8
{
AxisAngle,
XYAxes,
ZAxis,
Euler
};
struct FMujocoOrientation
{
TArray<double, TFixedAllocator<4>> AxisAngle;
TArray<double, TFixedAllocator<6>> XYAxes;
TArray<double, TFixedAllocator<3>> ZAxis;
TArray<double, TFixedAllocator<3>> Euler;
EMujocoOrientationType Type;
};
USTRUCT(BlueprintType)
struct FVisibleGeomGroups
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup0 = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup1 = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup2 = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup3 = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup4 = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco Import")
bool bGeomGroup5 = false;
};
UCLASS(Blueprintable, Config = EditorPerProjectUserSettings)
class UMjocoImportSettings : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(Config)
const UClass* ParentClass;
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import")
bool bImportMeshes;
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes"))
FVisibleGeomGroups VisibleGeomGroups;
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes"))
bool bImportMaterials;
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes"))
bool bImportTextures;
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import")
FString BaseDir = "";
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes"))
FString MeshSubdir = "Meshes";
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes && bImportMaterials"))
FString MaterialSubdir = "Materials";
UPROPERTY(Config, EditAnywhere, Category = "Mujoco Import", meta = (EditConditionHides, EditCondition = "bImportMeshes && bImportTextures"))
FString TextureSubdir = "Textures";
};
UCLASS()
class LUCKYMUJOCOEDITOR_API UMujocoFactory : public UFactory
{
GENERATED_BODY()
public:
UMujocoFactory();
virtual bool ConfigureProperties() override;
virtual void PostInitProperties() override;
virtual bool FactoryCanImport(const FString& Filename) override;
virtual bool CanImportBeCanceled() const override;
virtual IImportSettingsParser* GetImportSettingsParser() override;
virtual TArray<FString> GetFormats() const override;
virtual bool DoesSupportClass(UClass* Class) override;
virtual UClass* ResolveSupportedClass() override;
virtual UObject* FactoryCreateFile(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, const FString& Filename, const TCHAR* Parms, FFeedbackContext* Warn, bool& bOutOperationCanceled) override;
};