Patch MuJoCo plugin #50

Merged
evanvyktori merged 6 commits from ft-pre-post-substep-delegates into main 2025-04-30 14:22:04 +00:00
2 changed files with 23 additions and 7 deletions
Showing only changes of commit 5ee0e40e6f - Show all commits

View File

@ -115,9 +115,15 @@ void AMujocoVolumeActor::BindPostPhysicDelegate(UserClass* Object, void(UserClas
PostPhysicUpdateDelegate.BindUObject(Object, Func);
}
void AMujocoVolumeActor::InitializeMujoco(TMap<FString, FString> ContactExclusion)
void AMujocoVolumeActor::InitializeMujoco()
{
if (!Options)
InitializeMujocoScene_WithContactExclusion(TMap<FString, FString>{});
}
void AMujocoVolumeActor::InitializeMujocoScene_WithContactExclusion(const TMap<FString, FString>& ContactExclusion)
{
if (!Options)
{
return;
}
@ -170,6 +176,8 @@ void AMujocoVolumeActor::InitializeMujoco(TMap<FString, FString> ContactExclusio
return;
}
// TODO Here we should check for mujoco dll if we are on windows and LOG an error if there is not + gently quit the game
std::array<char, 1024> ErrMsg{};
MujocoModel = MakeMujocoModelPtr(mj_loadXML(TCHAR_TO_ANSI(*ExportFilename), nullptr, ErrMsg.data(), ErrMsg.size()));
if (!MujocoModel)

View File

@ -33,15 +33,23 @@ class LUCKYMUJOCO_API AMujocoVolumeActor : public AActor
public:
AMujocoVolumeActor();
UFUNCTION(BlueprintCallable, Category = "Mujoco")
/**
* Initialize the sim scene in headless mujoco
* @param ContactExclusion a list of pairs that should be patched in the xml file for contact exclusion (no friction, no collision)
* TODO ContactExclusion should be stored as a property of MujocoActor and not passed in the scene init
* TODO This require to cast the Actor in addition to the components list
*/
void InitializeMujoco(TMap<FString, FString> ContactExclusion);
UFUNCTION(BlueprintCallable, Category = "Mujoco")
void InitializeMujoco();
/**
* Initialize the sim scene in headless mujoco with a list of contact exclusion
* @param ContactExclusion a list of pairs that should be patched in the xml file for contact exclusion (no friction, no collision)
* TODO Can't use a default empty map as parameter in blueprints? We shouldn't need to have 2 functions
* TODO ContactExclusion should be stored as a property of MujocoActor and not passed in the scene init
* TODO This require to cast the Actor in addition to the components list
*/
UFUNCTION(BlueprintCallable, Category = "Mujoco")
void InitializeMujocoScene_WithContactExclusion(const TMap<FString, FString>& ContactExclusion);
protected:
virtual void BeginPlay() override;