Group platform components into descriptive subfolders
PiperOrigin-RevId: 895832492 Change-Id: I6cc56b0e4b002b2998579cde95f4b88dfbd88184
This commit is contained in:
committed by
Copybara-Service
parent
6273331d82
commit
9f3babd60c
@@ -20,67 +20,67 @@ add_library(${MUJOCO_PLATFORM_TARGET_NAME} STATIC)
|
||||
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME}
|
||||
PUBLIC
|
||||
egl_utils.cc
|
||||
egl_utils.h
|
||||
enum_utils.h
|
||||
file_dialog.h
|
||||
graphics_mode.cc
|
||||
graphics_mode.h
|
||||
gui.cc
|
||||
gui.h
|
||||
gui_spec.cc
|
||||
gui_spec.h
|
||||
helpers.cc
|
||||
helpers.h
|
||||
imgui_widgets.cc
|
||||
imgui_widgets.h
|
||||
interaction.cc
|
||||
interaction.h
|
||||
model_holder.cc
|
||||
model_holder.h
|
||||
picture_gui.h
|
||||
picture_gui.cc
|
||||
plugin.cc
|
||||
plugin.h
|
||||
renderer.cc
|
||||
renderer.h
|
||||
sim_history.cc
|
||||
sim_history.h
|
||||
sim_profiler.cc
|
||||
sim_profiler.h
|
||||
spec_editor.cc
|
||||
spec_editor.h
|
||||
step_control.cc
|
||||
step_control.h
|
||||
window.cc
|
||||
window.h
|
||||
hal/egl_utils.cc
|
||||
hal/egl_utils.h
|
||||
hal/graphics_mode.cc
|
||||
hal/graphics_mode.h
|
||||
hal/renderer.cc
|
||||
hal/renderer.h
|
||||
hal/window.cc
|
||||
hal/window.h
|
||||
sim/model_holder.cc
|
||||
sim/model_holder.h
|
||||
sim/sim_history.cc
|
||||
sim/sim_history.h
|
||||
sim/sim_profiler.cc
|
||||
sim/sim_profiler.h
|
||||
sim/step_control.cc
|
||||
sim/step_control.h
|
||||
ux/enum_utils.h
|
||||
ux/file_dialog.h
|
||||
ux/gui.cc
|
||||
ux/gui.h
|
||||
ux/gui_spec.cc
|
||||
ux/gui_spec.h
|
||||
ux/imgui_widgets.cc
|
||||
ux/imgui_widgets.h
|
||||
ux/interaction.cc
|
||||
ux/interaction.h
|
||||
ux/picture_gui.h
|
||||
ux/picture_gui.cc
|
||||
ux/plugin.cc
|
||||
ux/plugin.h
|
||||
ux/spec_editor.cc
|
||||
ux/spec_editor.h
|
||||
)
|
||||
|
||||
if(NOT WIN32)
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME}
|
||||
PUBLIC
|
||||
object_launcher_plugin.cc
|
||||
ux/object_launcher_plugin.cc
|
||||
)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
set_source_files_properties(window_osx.mm PROPERTIES
|
||||
set_source_files_properties(hal/window_osx.mm PROPERTIES
|
||||
COMPILE_FLAGS "-x objective-c++")
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME} PUBLIC
|
||||
window_osx.mm
|
||||
file_dialog_cocoa.mm
|
||||
hal/window_osx.mm
|
||||
ux/file_dialog_cocoa.mm
|
||||
)
|
||||
elseif(UNIX AND NOT APPLE)
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME} PUBLIC
|
||||
file_dialog_zenity.cc
|
||||
ux/file_dialog_zenity.cc
|
||||
)
|
||||
elseif(WIN32)
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME} PUBLIC
|
||||
file_dialog_win.cc
|
||||
ux/file_dialog_win.cc
|
||||
)
|
||||
else()
|
||||
target_sources(${MUJOCO_PLATFORM_TARGET_NAME} PUBLIC
|
||||
file_dialog.cc
|
||||
ux/file_dialog.cc
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/egl_utils.h"
|
||||
#include "experimental/platform/hal/egl_utils.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_EGL_UTILS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_EGL_UTILS_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_EGL_UTILS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_EGL_UTILS_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
@@ -25,4 +25,4 @@ std::shared_ptr<void> CreateEglContext();
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_EGL_UTILS_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_EGL_UTILS_H_
|
||||
+2
-1
@@ -12,9 +12,10 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
|
||||
#include <string_view>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
namespace mujoco::platform {
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_GRAPHICS_MODE_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_GRAPHICS_MODE_H_
|
||||
|
||||
#include <string_view>
|
||||
|
||||
@@ -56,4 +56,4 @@ GraphicsMode GraphicsModeFromString(std::string_view str,
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GRAPHICS_MODE_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_GRAPHICS_MODE_H_
|
||||
@@ -12,23 +12,22 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/renderer.h"
|
||||
#include "experimental/platform/hal/renderer.h"
|
||||
|
||||
#include <chrono>
|
||||
#include <cstddef>
|
||||
#include <span>
|
||||
#include <utility>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
#include <imgui.h>
|
||||
#include <backends/imgui_impl_opengl3.h>
|
||||
#include <imgui.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#if !defined(__EMSCRIPTEN__) && !defined(__APPLE__)
|
||||
#include "experimental/platform/egl_utils.h"
|
||||
#include "experimental/platform/hal/egl_utils.h"
|
||||
#endif
|
||||
#include "experimental/filament/render_context_filament.h"
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/plugin.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "experimental/platform/ux/plugin.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -147,8 +146,7 @@ void Renderer::Render(const mjModel* model, mjData* data,
|
||||
vis_option = &default_opt;
|
||||
}
|
||||
|
||||
mjv_updateScene(model, data, vis_option, perturb, camera, mjCAT_ALL,
|
||||
&scene_);
|
||||
mjv_updateScene(model, data, vis_option, perturb, camera, mjCAT_ALL, &scene_);
|
||||
|
||||
const bool render_to_texture = !pixels.empty();
|
||||
if (render_to_texture) {
|
||||
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_RENDERER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_RENDERER_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_RENDERER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_RENDERER_H_
|
||||
|
||||
#include <chrono>
|
||||
#include <cstddef>
|
||||
@@ -23,7 +23,7 @@
|
||||
#include <span>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -113,4 +113,4 @@ class Renderer {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_RENDERER_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_RENDERER_H_
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/window.h"
|
||||
#include "experimental/platform/hal/window.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
@@ -32,10 +32,9 @@
|
||||
#include <backends/imgui_impl_sdl2.h>
|
||||
#include <imgui.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "user/user_resource.h"
|
||||
|
||||
|
||||
// Because X11/Xlib.h defines Status.
|
||||
#ifdef Status
|
||||
#undef Status
|
||||
@@ -126,9 +125,9 @@ Window::Window(std::string_view title, int width, int height, Config config)
|
||||
}
|
||||
|
||||
const float content_scale = ImGui_ImplSDL2_GetContentScaleForDisplay(0);
|
||||
sdl_window_ = SDL_CreateWindow(title.data(), SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED, width,
|
||||
height, window_flags);
|
||||
sdl_window_ =
|
||||
SDL_CreateWindow(title.data(), SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED, width, height, window_flags);
|
||||
if (!sdl_window_) {
|
||||
mju_error("Error creating window: %s", SDL_GetError());
|
||||
}
|
||||
@@ -244,8 +243,7 @@ void Window::Present(std::span<const std::byte> pixels) {
|
||||
SDL_Surface* surface = SDL_GetWindowSurface(sdl_window_);
|
||||
const unsigned char* src =
|
||||
reinterpret_cast<const unsigned char*>(pixels.data());
|
||||
unsigned char* dst =
|
||||
static_cast<unsigned char*>(surface->pixels);
|
||||
unsigned char* dst = static_cast<unsigned char*>(surface->pixels);
|
||||
|
||||
for (int i = 0; i < height_; ++i) {
|
||||
for (int j = 0; j < width_; ++j) {
|
||||
@@ -260,14 +258,12 @@ void Window::Present(std::span<const std::byte> pixels) {
|
||||
}
|
||||
|
||||
SDL_RenderPresent(sdl_renderer_);
|
||||
} else if (config_.gfx_mode != GraphicsMode::FilamentVulkan
|
||||
&& config_.gfx_mode != GraphicsMode::FilamentOpenGl) {
|
||||
} else if (config_.gfx_mode != GraphicsMode::FilamentVulkan &&
|
||||
config_.gfx_mode != GraphicsMode::FilamentOpenGl) {
|
||||
SDL_GL_SwapWindow(sdl_window_);
|
||||
}
|
||||
}
|
||||
|
||||
GraphicsMode Window::GetGraphicsMode() const {
|
||||
return config_.gfx_mode;
|
||||
}
|
||||
GraphicsMode Window::GetGraphicsMode() const { return config_.gfx_mode; }
|
||||
|
||||
} // namespace mujoco::platform
|
||||
@@ -12,17 +12,17 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_WINDOW_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_WINDOW_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_WINDOW_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_WINDOW_H_
|
||||
|
||||
#include <cstddef>
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include <SDL_video.h>
|
||||
#include <SDL_render.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include <SDL_video.h>
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -104,4 +104,4 @@ class Window {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_WINDOW_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_HAL_WINDOW_H_
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/model_holder.h"
|
||||
#include "experimental/platform/sim/model_holder.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstring>
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_MODEL_HOLDER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_MODEL_HOLDER_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_MODEL_HOLDER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_MODEL_HOLDER_H_
|
||||
|
||||
#include <memory>
|
||||
#include <cstddef>
|
||||
@@ -81,4 +81,4 @@ class ModelHolder {
|
||||
};
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_MODEL_HOLDER_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_MODEL_HOLDER_H_
|
||||
+2
-1
@@ -12,11 +12,12 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/sim_history.h"
|
||||
#include "experimental/platform/sim/sim_history.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <climits>
|
||||
#include <span>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
namespace mujoco::platform {
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_HISTORY_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_HISTORY_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_HISTORY_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_HISTORY_H_
|
||||
|
||||
#include <span>
|
||||
#include <vector>
|
||||
@@ -91,4 +91,4 @@ class SimHistory {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_HISTORY_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_HISTORY_H_
|
||||
+2
-2
@@ -12,11 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/sim_profiler.h"
|
||||
#include "experimental/platform/sim/sim_profiler.h"
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include <imgui.h>
|
||||
#include <implot.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_PROFILER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_PROFILER_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_PROFILER_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_PROFILER_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
@@ -52,4 +52,4 @@ class SimProfiler {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_PROFILER_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_SIM_PROFILER_H_
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/step_control.h"
|
||||
#include "experimental/platform/sim/step_control.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_STEP_CONTROL_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_STEP_CONTROL_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_STEP_CONTROL_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_STEP_CONTROL_H_
|
||||
|
||||
#include <chrono>
|
||||
#include <string>
|
||||
@@ -123,4 +123,4 @@ class StepControl {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_STEP_CONTROL_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SIM_STEP_CONTROL_H_
|
||||
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_ENUM_UTILS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_ENUM_UTILS_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_ENUM_UTILS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_ENUM_UTILS_H_
|
||||
|
||||
#include <array>
|
||||
#include <bit>
|
||||
@@ -167,4 +167,4 @@ constexpr std::string_view enum_to_string(E value) {
|
||||
|
||||
} // namespace mujoco::platform::enum_utils
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_ENUM_UTILS_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_ENUM_UTILS_H_
|
||||
+1
-2
@@ -12,10 +12,9 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/file_dialog.h"
|
||||
#include "experimental/platform/ux/file_dialog.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
+3
-3
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_FILE_DIALOG_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_FILE_DIALOG_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_FILE_DIALOG_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_FILE_DIALOG_H_
|
||||
|
||||
#include <span>
|
||||
#include <string>
|
||||
@@ -56,4 +56,4 @@ DialogResult SelectPathDialog(std::string_view path);
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_FILE_DIALOG_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_FILE_DIALOG_H_
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
#include <string>
|
||||
|
||||
#include <Cocoa/Cocoa.h>
|
||||
#include "experimental/platform/file_dialog.h"
|
||||
#include "experimental/platform/ux/file_dialog.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/file_dialog.h"
|
||||
#include "experimental/platform/ux/file_dialog.h"
|
||||
|
||||
#ifndef UNICODE
|
||||
#define UNICODE
|
||||
+4
-4
@@ -12,10 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/file_dialog.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <cstring>
|
||||
#include <fcntl.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -23,11 +20,14 @@
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <cstring>
|
||||
#include <span>
|
||||
#include <string_view>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <vector>
|
||||
|
||||
#include "experimental/platform/ux/file_dialog.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
static DialogResult RunZenity(std::vector<std::string>& args) {
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/gui.h"
|
||||
#include "experimental/platform/ux/gui.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
@@ -26,8 +26,8 @@
|
||||
#include <implot.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/helpers.h"
|
||||
#include "experimental/platform/interaction.h"
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/interaction.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_H_
|
||||
|
||||
// A collection of functions for building ImGui panels for common MuJoCo
|
||||
// visualization and manipulation UX. These functions are primarily used by
|
||||
@@ -131,4 +131,4 @@ void StatsGui(const mjModel* model, const mjData* data, bool paused, float fps);
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_H_
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/gui_spec.h"
|
||||
#include "experimental/platform/ux/gui_spec.h"
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
@@ -20,8 +20,8 @@
|
||||
#include <imgui.h>
|
||||
#include <mujoco/mjxmacro.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/spec_editor.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/spec_editor.h"
|
||||
|
||||
// Define the mujoco X macros to add fields to the ImGui_DataTable.
|
||||
// We limit the fields to the ones with a matching element by comparing the
|
||||
@@ -12,11 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_SPEC_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_SPEC_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_SPEC_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_SPEC_H_
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/spec_editor.h"
|
||||
#include "experimental/platform/ux/spec_editor.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -44,4 +44,4 @@ void ElementModelGui(const mjModel* model, mjsElement* element);
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_GUI_SPEC_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_GUI_SPEC_H_
|
||||
+14
-17
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
@@ -62,8 +62,7 @@ KeyValues ReadIniSection(const std::string& contents,
|
||||
}
|
||||
|
||||
ImGui_DataPtrTable::ImGui_DataPtrTable(float w1, float w2) {
|
||||
ImGui::BeginTable("##PropertiesTable", 2,
|
||||
ImGuiTableFlags_RowBg);
|
||||
ImGui::BeginTable("##PropertiesTable", 2, ImGuiTableFlags_RowBg);
|
||||
const float width = ImGui::GetContentRegionAvail().x;
|
||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, width * w1);
|
||||
ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, width * w2);
|
||||
@@ -94,16 +93,16 @@ void ImGui_DataPtrTable::DataPtr(const char* label, const char* ptr, int index,
|
||||
ImGui::Text("%s", "(char not implemented, please report bug)");
|
||||
}
|
||||
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const mjtByte* ptr, int index,
|
||||
int n) {
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const mjtByte* ptr,
|
||||
int index, int n) {
|
||||
for (int i = 0; i < n; ++i) {
|
||||
MakeLabel(label, i, n);
|
||||
ImGui::Text("%s", ptr[index + i] ? "true" : "false");
|
||||
}
|
||||
}
|
||||
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const mjtSize* ptr, int index,
|
||||
int n) {
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const mjtSize* ptr,
|
||||
int index, int n) {
|
||||
Numeric(label, ptr, index, n);
|
||||
}
|
||||
|
||||
@@ -117,13 +116,14 @@ void ImGui_DataPtrTable::DataPtr(const char* label, const float* ptr, int index,
|
||||
Numeric(label, ptr, index, n);
|
||||
}
|
||||
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const double* ptr, int index,
|
||||
int n) {
|
||||
void ImGui_DataPtrTable::DataPtr(const char* label, const double* ptr,
|
||||
int index, int n) {
|
||||
Numeric(label, ptr, index, n);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void ImGui_DataPtrTable::Numeric(const char* label, const T* ptr, int index, int n) {
|
||||
void ImGui_DataPtrTable::Numeric(const char* label, const T* ptr, int index,
|
||||
int n) {
|
||||
const T* addr = ptr + index * n;
|
||||
|
||||
using U = std::conditional_t<std::is_floating_point_v<T>, float, int>;
|
||||
@@ -137,8 +137,7 @@ void ImGui_DataPtrTable::Numeric(const char* label, const T* ptr, int index, int
|
||||
}
|
||||
}
|
||||
|
||||
constexpr const char* fmt1 =
|
||||
std::is_floating_point_v<U> ? "%f" : "%d";
|
||||
constexpr const char* fmt1 = std::is_floating_point_v<U> ? "%f" : "%d";
|
||||
constexpr const char* fmt2 =
|
||||
std::is_floating_point_v<U> ? "%f %f" : "%d %d";
|
||||
constexpr const char* fmt3 =
|
||||
@@ -146,9 +145,7 @@ void ImGui_DataPtrTable::Numeric(const char* label, const T* ptr, int index, int
|
||||
constexpr const char* fmt4 =
|
||||
std::is_floating_point_v<U> ? "%f %f %f %f" : "%d %d %d %d";
|
||||
|
||||
auto text1 = [&](int offset) {
|
||||
ImGui::Text(fmt1, (U)(addr[offset]));
|
||||
};
|
||||
auto text1 = [&](int offset) { ImGui::Text(fmt1, (U)(addr[offset])); };
|
||||
auto text2 = [&](int offset) {
|
||||
ImGui::Text(fmt2, (U)(addr[offset + 0]), (U)(addr[offset + 1]));
|
||||
};
|
||||
@@ -299,7 +296,8 @@ void ImGui_SpecElementTable::operator()(const char* name, const char* alt_name,
|
||||
(*this)(name, quat, ref_quat, tooltip);
|
||||
break;
|
||||
case mjORIENTATION_AXISANGLE:
|
||||
(*this)(aname("axisangle").c_str(), alt.axisangle, ref_alt.axisangle, tooltip);
|
||||
(*this)(aname("axisangle").c_str(), alt.axisangle, ref_alt.axisangle,
|
||||
tooltip);
|
||||
break;
|
||||
case mjORIENTATION_XYAXES:
|
||||
(*this)(aname("xyaxes").c_str(), alt.xyaxes, ref_alt.xyaxes, tooltip);
|
||||
@@ -328,7 +326,6 @@ bool ImGui_Slider(const char* name, mjtNum* value, mjtNum min, mjtNum max) {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
bool ImGui_BeginHSplit(const char* id, float* height, bool* open) {
|
||||
const ImVec2 region = ImGui::GetContentRegionAvail();
|
||||
if (*height < 0) {
|
||||
+8
-10
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_IMGUI_WIDGETS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_IMGUI_WIDGETS_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_IMGUI_WIDGETS_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_IMGUI_WIDGETS_H_
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <imgui_internal.h>
|
||||
#include <misc/cpp/imgui_stdlib.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/enum_utils.h"
|
||||
#include "experimental/platform/ux/enum_utils.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -140,9 +140,7 @@ struct ScopedStyle {
|
||||
return *this;
|
||||
}
|
||||
|
||||
ImVec4 CurrentColor(ImGuiCol col) {
|
||||
return ImGui::GetStyle().Colors[col];
|
||||
}
|
||||
ImVec4 CurrentColor(ImGuiCol col) { return ImGui::GetStyle().Colors[col]; }
|
||||
|
||||
void Reset() {
|
||||
ImGui::PopStyleVar(num_vars);
|
||||
@@ -200,8 +198,7 @@ class ImGui_DataPtrTable {
|
||||
class ImGui_SpecElementTable : public ImGui_DataPtrTable {
|
||||
public:
|
||||
explicit ImGui_SpecElementTable(bool read_only = true)
|
||||
: read_only_(read_only) {
|
||||
}
|
||||
: read_only_(read_only) {}
|
||||
|
||||
// Scalar values used by mjSpec elements.
|
||||
void operator()(const char* label, mjtByte& val, const mjtByte& ref,
|
||||
@@ -274,7 +271,8 @@ class ImGui_SpecElementTable : public ImGui_DataPtrTable {
|
||||
|
||||
// Special handling for treating enum values as integers.
|
||||
template <typename T, typename U = std::enable_if_t<std::is_enum_v<T>, T>>
|
||||
void operator()(const char* label, T& val, const T& ref, const char* tooltip) {
|
||||
void operator()(const char* label, T& val, const T& ref,
|
||||
const char* tooltip) {
|
||||
Label(label, tooltip);
|
||||
Input(val, ref);
|
||||
}
|
||||
@@ -570,4 +568,4 @@ void MaybeSaveToClipboard(const std::string& contents);
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_IMGUI_WIDGETS_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_IMGUI_WIDGETS_H_
|
||||
+5
-3
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/interaction.h"
|
||||
#include "experimental/platform/ux/interaction.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
@@ -245,7 +245,8 @@ void MoveCamera(const mjModel* m, const mjData* d, mjvCamera* cam,
|
||||
|
||||
// y movement: either dolly (forward/back) or pedestal (up/down)
|
||||
mju_addToScl3(cam->lookat,
|
||||
(motion == CameraMotion::TRUCK_PEDESTAL) ? up : forward, dy);
|
||||
(motion == CameraMotion::TRUCK_PEDESTAL) ? up : forward,
|
||||
dy);
|
||||
|
||||
// x movement: camera truck (left/right)
|
||||
mju_addToScl3(cam->lookat, right, dx);
|
||||
@@ -341,7 +342,8 @@ static PickResult PickGeom(const mjModel* m, const mjData* d,
|
||||
const mjtNum ray_pos[3], const mjtNum ray_dir[3],
|
||||
const mjvOption* vis_options) {
|
||||
PickResult result;
|
||||
result.dist = mj_ray(m, d, ray_pos, ray_dir, vis_options->geomgroup,
|
||||
result.dist =
|
||||
mj_ray(m, d, ray_pos, ray_dir, vis_options->geomgroup,
|
||||
vis_options->flags[mjVIS_STATIC], -1, &result.geom, nullptr);
|
||||
mju_addScl3(result.point, ray_pos, ray_dir, result.dist);
|
||||
result.body = m->geom_bodyid[result.geom];
|
||||
+4
-5
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_INTERACTION_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_INTERACTION_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_INTERACTION_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_INTERACTION_H_
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
@@ -77,9 +77,8 @@ void InitPerturb(const mjModel* m, const mjData* d, const mjvCamera* cam,
|
||||
mjvPerturb* pert, mjtPertBit active);
|
||||
|
||||
void MovePerturb(const mjModel* m, const mjData* d, const mjvCamera* cam,
|
||||
mjvPerturb* pert, mjtMouse action, mjtNum reldx,
|
||||
mjtNum reldy);
|
||||
mjvPerturb* pert, mjtMouse action, mjtNum reldx, mjtNum reldy);
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_INTERACTION_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_INTERACTION_H_
|
||||
+7
-4
@@ -19,8 +19,8 @@
|
||||
|
||||
#include <imgui.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/plugin.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/plugin.h"
|
||||
|
||||
namespace mujoco::studio {
|
||||
|
||||
@@ -53,7 +53,9 @@ class ObjectLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
void HandleKeyboardEvent() { if (enabled_) active_ = true; }
|
||||
void HandleKeyboardEvent() {
|
||||
if (enabled_) active_ = true;
|
||||
}
|
||||
|
||||
bool UpdateSpecPreCompile(mjSpec* spec, const mjModel* model,
|
||||
const mjData* data, const mjvCamera* camera) {
|
||||
@@ -88,7 +90,8 @@ class ObjectLauncher {
|
||||
if (!geom) return false;
|
||||
|
||||
ObjectInfo& object = objects_.emplace_back();
|
||||
object.name = "projectile" + std::to_string(counter_++);;
|
||||
object.name = "projectile" + std::to_string(counter_++);
|
||||
;
|
||||
object.expiration = data->time + lifetime_;
|
||||
|
||||
mjtNum pos[3];
|
||||
+4
-4
@@ -12,16 +12,16 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/picture_gui.h"
|
||||
#include "experimental/platform/ux/picture_gui.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <vector>
|
||||
|
||||
#include <imgui.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/renderer.h"
|
||||
#include "experimental/platform/window.h"
|
||||
#include "experimental/platform/hal/renderer.h"
|
||||
#include "experimental/platform/hal/window.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
+5
-5
@@ -12,14 +12,14 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PICTURE_GUI_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PICTURE_GUI_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PICTURE_GUI_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PICTURE_GUI_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/renderer.h"
|
||||
#include "experimental/platform/window.h"
|
||||
#include "experimental/platform/hal/renderer.h"
|
||||
#include "experimental/platform/hal/window.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -37,4 +37,4 @@ void PipGui(const mjModel* model, mjData* data, platform::Window* window,
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PICTURE_GUI_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PICTURE_GUI_H_
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/plugin.h"
|
||||
#include "experimental/platform/ux/plugin.h"
|
||||
|
||||
#include <functional>
|
||||
#include <string_view>
|
||||
@@ -12,10 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PLUGIN_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PLUGIN_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PLUGIN_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PLUGIN_H_
|
||||
|
||||
#include <functional>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
|
||||
namespace mujoco::platform {
|
||||
@@ -30,7 +31,6 @@ void RegisterPlugin(T plugin);
|
||||
template <typename T>
|
||||
void ForEachPlugin(const std::function<void(T*)>& fn);
|
||||
|
||||
|
||||
// Plugin for processing custom UI windows. The plugin will be listed in the
|
||||
// "Plugins" main menu and, when selected, an ImGui window will be opened with
|
||||
// the name of the plugin as the title. The `update` function can then be used
|
||||
@@ -123,4 +123,4 @@ struct SpecEditorPlugin final {
|
||||
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_PLUGIN_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_PLUGIN_H_
|
||||
+14
-20
@@ -12,12 +12,13 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "experimental/platform/spec_editor.h"
|
||||
#include "experimental/platform/ux/spec_editor.h"
|
||||
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/model_holder.h"
|
||||
#include "experimental/platform/sim/model_holder.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -62,9 +63,7 @@ std::unique_ptr<ModelHolder> SpecEditor::Compile() {
|
||||
return holder;
|
||||
}
|
||||
|
||||
mjSpec* SpecEditor::GetActiveSpec() const {
|
||||
return active_spec_.get();
|
||||
}
|
||||
mjSpec* SpecEditor::GetActiveSpec() const { return active_spec_.get(); }
|
||||
|
||||
mjsElement* SpecEditor::AddElement(mjtObj type) {
|
||||
// TODO: check that type is only for spec elements.
|
||||
@@ -171,13 +170,9 @@ void SpecEditor::UpdateReferenceElement() {
|
||||
}
|
||||
}
|
||||
|
||||
mjsElement* SpecEditor::GetActiveElement() const {
|
||||
return active_element_;
|
||||
}
|
||||
mjsElement* SpecEditor::GetActiveElement() const { return active_element_; }
|
||||
|
||||
mjsElement* SpecEditor::GetRefElement() const {
|
||||
return ref_element_;
|
||||
}
|
||||
mjsElement* SpecEditor::GetRefElement() const { return ref_element_; }
|
||||
|
||||
void SpecEditor::CommitChanges(mjsElement* element) {
|
||||
if (element == nullptr) {
|
||||
@@ -209,14 +204,13 @@ void SpecEditor::Undo() {
|
||||
active_map_.Insert(entry.key, entry.type_index);
|
||||
}
|
||||
|
||||
active_element_ = active_map_.Resolve(active_spec_.get(), active_element_key_);
|
||||
active_element_ =
|
||||
active_map_.Resolve(active_spec_.get(), active_element_key_);
|
||||
UpdateReferenceElement();
|
||||
}
|
||||
}
|
||||
|
||||
bool SpecEditor::CanUndo() const {
|
||||
return cursor_ > 0;
|
||||
}
|
||||
bool SpecEditor::CanUndo() const { return cursor_ > 0; }
|
||||
|
||||
void SpecEditor::Redo() {
|
||||
if (CanRedo()) {
|
||||
@@ -230,14 +224,13 @@ void SpecEditor::Redo() {
|
||||
active_map_.Remove(entry.key);
|
||||
}
|
||||
|
||||
active_element_ = active_map_.Resolve(active_spec_.get(), active_element_key_);
|
||||
active_element_ =
|
||||
active_map_.Resolve(active_spec_.get(), active_element_key_);
|
||||
UpdateReferenceElement();
|
||||
}
|
||||
}
|
||||
|
||||
bool SpecEditor::CanRedo() const {
|
||||
return cursor_ < history_.size() - 1;
|
||||
}
|
||||
bool SpecEditor::CanRedo() const { return cursor_ < history_.size() - 1; }
|
||||
|
||||
void SpecEditor::AppendHistory(HistoryEntry entry) {
|
||||
++cursor_;
|
||||
@@ -312,7 +305,8 @@ SpecEditor::SpecPtr SpecEditor::Copy(const mjSpec* spec) {
|
||||
return SpecPtr(mj_copySpec(spec), mj_deleteSpec);
|
||||
}
|
||||
|
||||
mjsElement* SpecEditor::AddElementToSpec(mjSpec* spec, mjtObj type, mjsBody* body) {
|
||||
mjsElement* SpecEditor::AddElementToSpec(mjSpec* spec, mjtObj type,
|
||||
mjsBody* body) {
|
||||
if (spec == nullptr || type == mjOBJ_UNKNOWN) {
|
||||
return nullptr;
|
||||
}
|
||||
+4
-4
@@ -12,8 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SPEC_EDITOR_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SPEC_EDITOR_H_
|
||||
#ifndef MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_SPEC_EDITOR_H_
|
||||
#define MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_SPEC_EDITOR_H_
|
||||
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/model_holder.h"
|
||||
#include "experimental/platform/sim/model_holder.h"
|
||||
|
||||
namespace mujoco::platform {
|
||||
|
||||
@@ -174,4 +174,4 @@ class SpecEditor {
|
||||
};
|
||||
} // namespace mujoco::platform
|
||||
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_SPEC_EDITOR_H_
|
||||
#endif // MUJOCO_SRC_EXPERIMENTAL_PLATFORM_UX_SPEC_EDITOR_H_
|
||||
@@ -35,19 +35,19 @@
|
||||
#include <imgui.h>
|
||||
#include <implot.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/file_dialog.h"
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/gui.h"
|
||||
#include "experimental/platform/gui_spec.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "experimental/platform/hal/renderer.h"
|
||||
#include "experimental/platform/hal/window.h"
|
||||
#include "experimental/platform/helpers.h"
|
||||
#include "experimental/platform/imgui_widgets.h"
|
||||
#include "experimental/platform/interaction.h"
|
||||
#include "experimental/platform/model_holder.h"
|
||||
#include "experimental/platform/picture_gui.h"
|
||||
#include "experimental/platform/plugin.h"
|
||||
#include "experimental/platform/renderer.h"
|
||||
#include "experimental/platform/step_control.h"
|
||||
#include "experimental/platform/window.h"
|
||||
#include "experimental/platform/sim/model_holder.h"
|
||||
#include "experimental/platform/sim/step_control.h"
|
||||
#include "experimental/platform/ux/file_dialog.h"
|
||||
#include "experimental/platform/ux/gui.h"
|
||||
#include "experimental/platform/ux/gui_spec.h"
|
||||
#include "experimental/platform/ux/imgui_widgets.h"
|
||||
#include "experimental/platform/ux/interaction.h"
|
||||
#include "experimental/platform/ux/picture_gui.h"
|
||||
#include "experimental/platform/ux/plugin.h"
|
||||
|
||||
namespace mujoco::studio {
|
||||
|
||||
@@ -1129,8 +1129,8 @@ void App::SpecExplorerGui() {
|
||||
|
||||
mjsElement* element = tmp_.curr_element;
|
||||
bool open = element != nullptr;
|
||||
if (platform::ImGui_BeginHSplit("SpecExplorerTree",
|
||||
&tmp_.explorer_split, &open)) {
|
||||
if (platform::ImGui_BeginHSplit("SpecExplorerTree", &tmp_.explorer_split,
|
||||
&open)) {
|
||||
platform::SpecTreeGui(&element, spec());
|
||||
|
||||
if (element != tmp_.curr_element) {
|
||||
@@ -1147,8 +1147,8 @@ void App::SpecExplorerGui() {
|
||||
}
|
||||
}
|
||||
|
||||
if (platform::ImGui_HSplit("SpecExplorerProperties",
|
||||
&tmp_.explorer_split, &open)) {
|
||||
if (platform::ImGui_HSplit("SpecExplorerProperties", &tmp_.explorer_split,
|
||||
&open)) {
|
||||
ImGui::Text("%s", mju_type2Str(tmp_.curr_element->elemtype));
|
||||
ImGui::SameLine();
|
||||
ImGui::Text("(%d)", mjs_getId(tmp_.curr_element));
|
||||
@@ -1434,7 +1434,8 @@ void App::ToolBarGui() {
|
||||
const float label_width = GetExpectedLabelWidth();
|
||||
const float copy_btn_width = ImGui::CalcTextSize(ICON_COPY_CAMERA).x +
|
||||
ImGui::GetStyle().FramePadding.x * 2;
|
||||
const float theme_width = ImGui::CalcTextSize(platform::ICON_FA_CIRCLE_O).x +
|
||||
const float theme_width =
|
||||
ImGui::CalcTextSize(platform::ICON_FA_CIRCLE_O).x +
|
||||
ImGui::GetStyle().FramePadding.x * 2;
|
||||
const float sp = ImGui::GetStyle().ItemSpacing.x;
|
||||
const float right_width = label_width + sp + label_width + sp +
|
||||
@@ -1766,7 +1767,6 @@ void App::MainMenuGui() {
|
||||
}
|
||||
ImGui::Separator();
|
||||
|
||||
|
||||
#ifdef __linux__
|
||||
if (ImGui::BeginMenu("Graphics Mode (Experimental)")) {
|
||||
std::optional<platform::GraphicsMode> mode;
|
||||
|
||||
@@ -26,18 +26,18 @@
|
||||
#include <vector>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/gui.h"
|
||||
#include "experimental/platform/gui_spec.h"
|
||||
#include "experimental/platform/interaction.h"
|
||||
#include "experimental/platform/model_holder.h"
|
||||
#include "experimental/platform/picture_gui.h"
|
||||
#include "experimental/platform/renderer.h"
|
||||
#include "experimental/platform/sim_history.h"
|
||||
#include "experimental/platform/sim_profiler.h"
|
||||
#include "experimental/platform/spec_editor.h"
|
||||
#include "experimental/platform/step_control.h"
|
||||
#include "experimental/platform/window.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "experimental/platform/hal/renderer.h"
|
||||
#include "experimental/platform/hal/window.h"
|
||||
#include "experimental/platform/sim/model_holder.h"
|
||||
#include "experimental/platform/sim/sim_history.h"
|
||||
#include "experimental/platform/sim/sim_profiler.h"
|
||||
#include "experimental/platform/sim/step_control.h"
|
||||
#include "experimental/platform/ux/gui.h"
|
||||
#include "experimental/platform/ux/gui_spec.h"
|
||||
#include "experimental/platform/ux/interaction.h"
|
||||
#include "experimental/platform/ux/picture_gui.h"
|
||||
#include "experimental/platform/ux/spec_editor.h"
|
||||
|
||||
namespace mujoco::studio {
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <absl/flags/flag.h>
|
||||
#include <absl/flags/parse.h>
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "experimental/studio/app.h"
|
||||
|
||||
ABSL_FLAG(int, window_width, 1400, "Window width");
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <utility>
|
||||
|
||||
#include <mujoco/mujoco.h>
|
||||
#include "experimental/platform/graphics_mode.h"
|
||||
#include "experimental/platform/hal/graphics_mode.h"
|
||||
#include "experimental/studio/app.h"
|
||||
|
||||
// Global app instance. Lifetime is controlled by Init/Deinit calls which are
|
||||
|
||||
Reference in New Issue
Block a user