From a9cd14ae7faf8bc985451974bdc157c086a6c14d Mon Sep 17 00:00:00 2001 From: Jb win Date: Wed, 30 Apr 2025 15:53:13 +0700 Subject: [PATCH] FT - Access low level mujoco data from anywhere + be careful, this is not const! --- .../Private/Actors/MujocoVolumeActor.cpp | 6 ++++ .../Public/Actors/MujocoVolumeActor.h | 36 +++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Actors/MujocoVolumeActor.cpp b/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Actors/MujocoVolumeActor.cpp index d2c585b0..1e6fdc8c 100644 --- a/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Actors/MujocoVolumeActor.cpp +++ b/Plugins/LuckyMujoco/Source/LuckyMujoco/Private/Actors/MujocoVolumeActor.cpp @@ -202,6 +202,12 @@ void AMujocoVolumeActor::InitializeMujoco() } } +mjData_& AMujocoVolumeActor::GetMujocoData() const +{ + check(MujocoData.IsValid()); + return *MujocoData.Get(); +} + void AMujocoVolumeActor::SetActuatorValue(const FString& ActuatorName, double Value) { if (MujocoModel) diff --git a/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Actors/MujocoVolumeActor.h b/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Actors/MujocoVolumeActor.h index 8140dcc2..cdbe2cc1 100644 --- a/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Actors/MujocoVolumeActor.h +++ b/Plugins/LuckyMujoco/Source/LuckyMujoco/Public/Actors/MujocoVolumeActor.h @@ -60,8 +60,16 @@ class LUCKYMUJOCO_API AMujocoVolumeActor : public AActor template void AssignComponentsToArray(UWorld* World, TArray>& ComponentArray); public: - AMujocoVolumeActor(); + AMujocoVolumeActor(); +protected: + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + virtual void PostRegisterAllComponents() override; + virtual void Tick(float DeltaTime) override; + virtual void PostInitializeComponents() override; + +public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mujoco | Simulation", meta = (Min = 0, Max = 100, ClampMin = 0, ClampMax = 100)) int32 FrameSkip = 0; @@ -80,6 +88,12 @@ public: UPROPERTY(BlueprintAssignable, Category = "Mujoco | Events") FOnMujocoCompileSuccess OnMujocoCompileSuccess; + /** + * @description + * @return mjData_ - Full access to mujoco scene options and data + */ + mjData_& GetMujocoData() const; + // --------------------------- // ------- POST UPDATE ------- // --------------------------- @@ -93,7 +107,10 @@ public: template void BindPostPhysicDelegate(UserClass* Object, void (UserClass::*Func)(float)); - + + // ------------------------- + // ------- ACTUATORS ------- + // ------------------------- UFUNCTION(BlueprintCallable, Category = "Mujoco") void SetActuatorValue(const FString& ActuatorName, double Value); @@ -112,6 +129,9 @@ public: UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Mujoco") FVector2D GetActuatorRangeByIndex(int32 ActuatorIndex) const; + // ---------------------- + // ------- JOINTS ------- + // ---------------------- UFUNCTION(BlueprintCallable, Category = "Mujoco") void SetJointValue(const FString& JointName, double Value); @@ -123,16 +143,4 @@ public: UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Mujoco") double GetJointValueByIndex(int32 JointIndex) const; - - - virtual void PostRegisterAllComponents() override; - - virtual void Tick(float DeltaTime) override; - - virtual void PostInitializeComponents() override; - -protected: - - virtual void BeginPlay() override; - virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; };