diff --git a/plugin/elasticity/CMakeLists.txt b/plugin/elasticity/CMakeLists.txt index ca649524..b16cd3e8 100644 --- a/plugin/elasticity/CMakeLists.txt +++ b/plugin/elasticity/CMakeLists.txt @@ -20,6 +20,7 @@ set(MUJOCO_ELASTICITY_INCLUDE set(MUJOCO_ELASTICITY_SRCS cable.cc cable.h + elasticity.cc solid.cc solid.h ) diff --git a/plugin/elasticity/cable.cc b/plugin/elasticity/cable.cc index dca45dc6..d7192728 100644 --- a/plugin/elasticity/cable.cc +++ b/plugin/elasticity/cable.cc @@ -221,7 +221,7 @@ void Cable::Compute(const mjModel* m, mjData* d, int instance) { -mjPLUGIN_DYNAMIC_LIBRARY_INIT { +void Cable::RegisterPlugin() { mjpPlugin plugin; mjp_defaultPlugin(&plugin); diff --git a/plugin/elasticity/cable.h b/plugin/elasticity/cable.h index 9c419deb..186bb127 100644 --- a/plugin/elasticity/cable.h +++ b/plugin/elasticity/cable.h @@ -36,6 +36,8 @@ class Cable { void Compute(const mjModel* m, mjData* d, int instance); + static void RegisterPlugin(); + int i0; // index of first body int n; // number of bodies in the cable std::vector prev; // indices of previous bodies (n x 1) diff --git a/plugin/elasticity/elasticity.cc b/plugin/elasticity/elasticity.cc new file mode 100644 index 00000000..38e63edb --- /dev/null +++ b/plugin/elasticity/elasticity.cc @@ -0,0 +1,26 @@ +// Copyright 2022 DeepMind Technologies Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include "cable.h" +#include "solid.h" + +namespace mujoco::plugin::elasticity { + +mjPLUGIN_DYNAMIC_LIBRARY_INIT { + Cable::RegisterPlugin(); + Solid::RegisterPlugin(); +} + +} // namespace mujoco::plugin::elasticity diff --git a/plugin/elasticity/solid.cc b/plugin/elasticity/solid.cc index ea7697af..c79df296 100644 --- a/plugin/elasticity/solid.cc +++ b/plugin/elasticity/solid.cc @@ -342,7 +342,7 @@ void Solid::Compute(const mjModel* m, mjData* d, int instance) { -mjPLUGIN_DYNAMIC_LIBRARY_INIT { +void Solid::RegisterPlugin() { mjpPlugin plugin; mjp_defaultPlugin(&plugin); diff --git a/plugin/elasticity/solid.h b/plugin/elasticity/solid.h index fd813e6a..25593f56 100644 --- a/plugin/elasticity/solid.h +++ b/plugin/elasticity/solid.h @@ -41,6 +41,8 @@ class Solid { void Compute(const mjModel* m, mjData* d, int instance); + static void RegisterPlugin(); + int i0; // index of first body int nc; // number of cubes in the grid int nv; // number of vertices (bodies) in the solid