#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> AxisAngle; TArray> XYAxes; TArray> ZAxis; TArray> 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 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; };