104 lines
3.2 KiB
C++
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;
|
|
}; |