Do not overwrite existing parent frames for worldbody elements when attaching an mjSpec to a frame or a site.
PiperOrigin-RevId: 737662046 Change-Id: I7028c21c803c01845ae1d53cb476f7b3df172313
This commit is contained in:
committed by
Copybara-Service
parent
da04688071
commit
1bf24e9f67
@@ -711,6 +711,25 @@ mjsBody* mjs_getParent(mjsElement* element) {
|
||||
|
||||
|
||||
|
||||
// get parent frame
|
||||
mjsFrame* mjs_getFrame(mjsElement* element) {
|
||||
mjCBase* base = static_cast<mjCBase*>(element);
|
||||
switch (element->elemtype) {
|
||||
case mjOBJ_BODY:
|
||||
case mjOBJ_FRAME:
|
||||
case mjOBJ_JOINT:
|
||||
case mjOBJ_GEOM:
|
||||
case mjOBJ_SITE:
|
||||
case mjOBJ_CAMERA:
|
||||
case mjOBJ_LIGHT:
|
||||
return base->frame ? &(base->frame->spec) : nullptr;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// find frame by name
|
||||
mjsFrame* mjs_findFrame(mjSpec* s, const char* name) {
|
||||
mjsElement* frame = mjs_findElement(s, mjOBJ_FRAME, name);
|
||||
|
||||
@@ -211,6 +211,9 @@ MJAPI mjsBody* mjs_findChild(mjsBody* body, const char* name);
|
||||
// Get parent body.
|
||||
MJAPI mjsBody* mjs_getParent(mjsElement* element);
|
||||
|
||||
// Get parent frame.
|
||||
MJAPI mjsFrame* mjs_getFrame(mjsElement* element);
|
||||
|
||||
// Find frame by name.
|
||||
MJAPI mjsFrame* mjs_findFrame(mjSpec* s, const char* name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user