Use a switch statement for handling geometry types.
PiperOrigin-RevId: 837097811 Change-Id: Ic473f9da3d4189430e98670afdae7bb3cca5ccbc
This commit is contained in:
committed by
Copybara-Service
parent
aa25075ea4
commit
0425355efc
@@ -72,51 +72,74 @@ static constexpr int kArrow2BottomConeDisk = 4;
|
|||||||
Drawable::Drawable(ObjectManager* object_mgr, const mjvGeom& geom)
|
Drawable::Drawable(ObjectManager* object_mgr, const mjvGeom& geom)
|
||||||
: material_(object_mgr),
|
: material_(object_mgr),
|
||||||
renderables_(object_mgr->GetEngine()) {
|
renderables_(object_mgr->GetEngine()) {
|
||||||
if (geom.type == mjGEOM_MESH) {
|
switch ((mjtGeom)geom.type) {
|
||||||
AddMesh(geom.dataid);
|
case mjGEOM_MESH:
|
||||||
} else if (geom.type == mjGEOM_HFIELD) {
|
AddMesh(geom.dataid);
|
||||||
AddHeightField(geom.dataid);
|
break;
|
||||||
} else if (geom.type == mjGEOM_PLANE) {
|
case mjGEOM_HFIELD:
|
||||||
AddShape(ObjectManager::kPlane);
|
AddHeightField(geom.dataid);
|
||||||
} else if (geom.type == mjGEOM_SPHERE) {
|
break;
|
||||||
AddShape(ObjectManager::kSphere);
|
case mjGEOM_PLANE:
|
||||||
} else if (geom.type == mjGEOM_ELLIPSOID) {
|
AddShape(ObjectManager::kPlane);
|
||||||
AddShape(ObjectManager::kSphere);
|
break;
|
||||||
} else if (geom.type == mjGEOM_BOX) {
|
case mjGEOM_SPHERE:
|
||||||
AddShape(ObjectManager::kBox);
|
AddShape(ObjectManager::kSphere);
|
||||||
} else if (geom.type == mjGEOM_CAPSULE) {
|
break;
|
||||||
AddShape(ObjectManager::kTube);
|
case mjGEOM_ELLIPSOID:
|
||||||
AddShape(ObjectManager::kDome);
|
AddShape(ObjectManager::kSphere);
|
||||||
AddShape(ObjectManager::kDome);
|
break;
|
||||||
} else if (geom.type == mjGEOM_CYLINDER) {
|
case mjGEOM_BOX:
|
||||||
AddShape(ObjectManager::kTube);
|
AddShape(ObjectManager::kBox);
|
||||||
AddShape(ObjectManager::kDisk);
|
break;
|
||||||
AddShape(ObjectManager::kDisk);
|
case mjGEOM_CAPSULE:
|
||||||
} else if (geom.type == mjGEOM_ARROW) {
|
AddShape(ObjectManager::kTube);
|
||||||
AddShape(ObjectManager::kTube);
|
AddShape(ObjectManager::kDome);
|
||||||
AddShape(ObjectManager::kCone);
|
AddShape(ObjectManager::kDome);
|
||||||
AddShape(ObjectManager::kDisk);
|
break;
|
||||||
} else if (geom.type == mjGEOM_ARROW1) {
|
case mjGEOM_CYLINDER:
|
||||||
AddShape(ObjectManager::kTube);
|
AddShape(ObjectManager::kTube);
|
||||||
AddShape(ObjectManager::kCone);
|
AddShape(ObjectManager::kDisk);
|
||||||
AddShape(ObjectManager::kDisk);
|
AddShape(ObjectManager::kDisk);
|
||||||
AddShape(ObjectManager::kDisk);
|
break;
|
||||||
} else if (geom.type == mjGEOM_ARROW2) {
|
case mjGEOM_ARROW:
|
||||||
AddShape(ObjectManager::kTube);
|
AddShape(ObjectManager::kTube);
|
||||||
AddShape(ObjectManager::kCone);
|
AddShape(ObjectManager::kCone);
|
||||||
AddShape(ObjectManager::kCone);
|
AddShape(ObjectManager::kDisk);
|
||||||
AddShape(ObjectManager::kDisk);
|
break;
|
||||||
AddShape(ObjectManager::kDisk);
|
case mjGEOM_ARROW1:
|
||||||
} else if (geom.type == mjGEOM_LINE) {
|
AddShape(ObjectManager::kTube);
|
||||||
AddShape(ObjectManager::kLine);
|
AddShape(ObjectManager::kCone);
|
||||||
} else if (geom.type == mjGEOM_LINEBOX) {
|
AddShape(ObjectManager::kDisk);
|
||||||
AddShape(ObjectManager::kLineBox);
|
AddShape(ObjectManager::kDisk);
|
||||||
} else if (geom.type == mjGEOM_TRIANGLE) {
|
break;
|
||||||
AddShape(ObjectManager::kTriangle);
|
case mjGEOM_ARROW2:
|
||||||
} else if (geom.type == mjGEOM_FLEX || geom.type == mjGEOM_SKIN) {
|
AddShape(ObjectManager::kTube);
|
||||||
// Flex and skin geometries are dynamically updated every frame.
|
AddShape(ObjectManager::kCone);
|
||||||
} else {
|
AddShape(ObjectManager::kCone);
|
||||||
mju_warning("Unsupported geom type: %d", geom.type);
|
AddShape(ObjectManager::kDisk);
|
||||||
|
AddShape(ObjectManager::kDisk);
|
||||||
|
break;
|
||||||
|
case mjGEOM_LINE:
|
||||||
|
AddShape(ObjectManager::kLine);
|
||||||
|
break;
|
||||||
|
case mjGEOM_LINEBOX:
|
||||||
|
AddShape(ObjectManager::kLineBox);
|
||||||
|
break;
|
||||||
|
case mjGEOM_TRIANGLE:
|
||||||
|
AddShape(ObjectManager::kTriangle);
|
||||||
|
break;
|
||||||
|
case mjGEOM_FLEX:
|
||||||
|
case mjGEOM_SKIN:
|
||||||
|
// Flex and skin geometries are dynamically updated every frame.
|
||||||
|
break;
|
||||||
|
case mjGEOM_NONE:
|
||||||
|
case mjGEOM_LABEL:
|
||||||
|
// Do nothing .
|
||||||
|
break;
|
||||||
|
case mjGEOM_SDF:
|
||||||
|
case mjNGEOMTYPES:
|
||||||
|
mju_warning("Unsupported geom type: %d", geom.type);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user