Skip to content

Commit 7597d15

Browse files
committed
Trying to update MuJoCo version to 3.3.0
1 parent d4a66e7 commit 7597d15

File tree

3 files changed

+2332
-318
lines changed

3 files changed

+2332
-318
lines changed

mujocoRelease.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.3
1+
3.3.0
Lines changed: 69 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,31 @@
11
package org.mujoco;
22

3-
43
import org.bytedeco.javacpp.*;
54
import org.bytedeco.javacpp.annotation.*;
65
import org.bytedeco.javacpp.tools.*;
76

7+
@Properties(value = { @Platform(includepath = { "/tmp/mujoco/include/" }, linkpath = { "/tmp/mujoco/lib/" }, include = {
8+
"mujoco/mjtnum.h",
89

9-
@Properties(
10-
value = {
11-
@Platform(
12-
includepath = {"/tmp/mujoco/include/"},
13-
linkpath = {"/tmp/mujoco/lib/"},
14-
include = {
15-
"mujoco/mjtnum.h",
16-
17-
"mujoco/mjexport.h",
18-
"mujoco/mujoco.h" ,
19-
"mujoco/mjmacro.h",
20-
"mujoco/mjthread.h",
21-
"mujoco/mjdata.h",
22-
"mujoco/mjmodel.h",
23-
"mujoco/mjrender.h",
24-
"mujoco/mjui.h",
25-
"mujoco/mjvisualize.h",
26-
10+
"mujoco/mjexport.h", "mujoco/mujoco.h", "mujoco/mjmacro.h", "mujoco/mjthread.h", "mujoco/mjdata.h",
11+
"mujoco/mjmodel.h", "mujoco/mjrender.h", "mujoco/mjui.h", "mujoco/mjvisualize.h",
2712

28-
//"mujoco/mjxmacro.h",
29-
"mujoco/mjplugin.h"
30-
},
31-
link = {"mujoco"}
32-
),
33-
@Platform(
34-
value = "windows-x86_64",
35-
includepath = {"mujoco/include/","C:/Users/runneradmin/AppData/Local/Temp/mujoco/include/"},
36-
linkpath = {"mujoco/lib/","C:/Users/runneradmin/AppData/Local/Temp/mujoco/lib/"}
37-
)
38-
},
39-
target = "org.mujoco.MuJoCoLib"
40-
)
13+
"mujoco/mjplugin.h", "mujoco/mjspec.h",
14+
// "mujoco/mjxmacro.h" // This will not work with JavaCPP
15+
}, link = { "mujoco" }),
16+
@Platform(value = "windows-x86_64", includepath = { "mujoco/include/",
17+
"C:/Users/runneradmin/AppData/Local/Temp/mujoco/include/" }, linkpath = { "mujoco/lib/",
18+
"C:/Users/runneradmin/AppData/Local/Temp/mujoco/lib/" }) }, target = "org.mujoco.MuJoCoLib")
4119

4220
public class MuJoCoConfig implements InfoMapper {
4321
public void map(InfoMap infoMap) {
4422
infoMap.put(new Info("MJ_STATIC").define(true));
4523
infoMap.put(new Info("mjtNum").cast().valueTypes("double").pointerTypes("DoublePointer"));
46-
24+
// mjString
25+
// infoMap.put(new
26+
// Info("mjString").cast().valueTypes("String").pointerTypes("StringPointer"));
27+
// Skip mjString type
28+
4729
infoMap.put(new Info("MJOPTION_VECTORS").skip());
4830
infoMap.put(new Info("MJMODEL_POINTERS").skip());
4931
infoMap.put(new Info("MJDATA_VECTOR").skip());
@@ -71,10 +53,10 @@ public void map(InfoMap infoMap) {
7153
infoMap.put(new Info("mjEXTERNC").skip());
7254
infoMap.put(new Info("mjDLLMAIN").skip());
7355
infoMap.put(new Info("XMJV").skip());
74-
//infoMap.put(new Info("X").skip());
75-
//infoMap.put(new Info("MJOPTION_FLOATS").skip());
76-
//infoMap.put(new Info("MJOPTION_INTS").skip());
77-
//infoMap.put(new Info("MJOPTION_SCALARS").skip());
56+
// infoMap.put(new Info("X").skip());
57+
// infoMap.put(new Info("MJOPTION_FLOATS").skip());
58+
// infoMap.put(new Info("MJOPTION_INTS").skip());
59+
// infoMap.put(new Info("MJOPTION_SCALARS").skip());
7860
infoMap.put(new Info("mjPLUGIN_LIB_INIT").skip());
7961
infoMap.put(new Info("mjfPluginLibraryLoadCallback").skip());
8062
infoMap.put(new Info("mjfGeneric").skip());
@@ -83,13 +65,56 @@ public void map(InfoMap infoMap) {
8365
infoMap.put(new Info("mjfTime").skip());
8466
infoMap.put(new Info("mjfAct").skip());
8567
infoMap.put(new Info("mjfCollision").skip());
86-
//mj__freeStack
68+
// mj__freeStack
8769
infoMap.put(new Info("mj__freeStack").skip());
88-
//mj__markStack
70+
// mj__markStack
8971
infoMap.put(new Info("mj__markStack").skip());
90-
91-
// infoMap.put(new Info("").skip());
92-
// infoMap.put(new Info("").skip());
93-
94-
}
72+
73+
// XNV
74+
infoMap.put(new Info("XNV").skip());
75+
// mjs_findElement
76+
infoMap.put(new Info("mjs_findElement").skip());
77+
78+
// mjs_firstElement
79+
infoMap.put(new Info("mjs_firstElement").skip());
80+
// mjs_firstChild
81+
infoMap.put(new Info("mjs_firstChild").skip());
82+
// Add this to your MuJoCoConfig.java
83+
// Add this to your JavaCPP configuration class
84+
// This adds custom code at the beginning of the generated file
85+
infoMap.put(new Info().cppText(
86+
// Add a macro that will be used for string assignments
87+
"#include <string>\n" +
88+
"#define ASSIGN_TO_STRING_PTR(ptr, val) if(ptr) *ptr = val;\n" +
89+
90+
// Create a function to override the problematic assignments
91+
"template<typename T>\n" +
92+
"void assign_string(T* ptr, const std::string& val) {\n" +
93+
" if(ptr) *ptr = val;\n" +
94+
"}\n" +
95+
96+
// This is the critical part - redefine the cast operator to call our safe function
97+
"#define __JAVACPP_HACK\n" +
98+
"#ifdef __JAVACPP_HACK\n" +
99+
"#define JAVACPP_STRING_CAST(x)\n" +
100+
"#endif\n"
101+
));
102+
103+
// Tell JavaCPP how to handle specific problematic cases
104+
infoMap.put(new Info("ptr->meshdir = (std::basic_string< char >&)adapter0")
105+
.define(false)
106+
.cppText(" assign_string(ptr->meshdir, adapter0)"));
107+
108+
infoMap.put(new Info("ptr->modelname = (std::basic_string< char >&)adapter0")
109+
.define(false)
110+
.cppText(" assign_string(ptr->modelname, adapter0)"));
111+
112+
infoMap.put(new Info("ptr->modelfiledir = (std::basic_string< char >&)adapter0")
113+
.define(false)
114+
.cppText(" assign_string(ptr->modelfiledir, adapter0)"));
115+
116+
// Add similar entries for other problematic assignments
117+
118+
119+
}
95120
}

0 commit comments

Comments
 (0)