SimbodyBoxShape.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17#ifndef GAZEBO_PHYSICS_SIMBODY_SIMBODYBOXSHAPE_HH_
18#define GAZEBO_PHYSICS_SIMBODY_SIMBODYBOXSHAPE_HH_
19
22#include "gazebo/util/system.hh"
23
24namespace gazebo
25{
26 namespace physics
27 {
31
33 class GZ_PHYSICS_VISIBLE SimbodyBoxShape : public BoxShape
34 {
36 public: explicit SimbodyBoxShape(CollisionPtr _parent)
37 : BoxShape(_parent) {}
38
40 public: virtual ~SimbodyBoxShape() {}
41
42 // Documentation inherited
43 public: void SetSize(const ignition::math::Vector3d &_size)
44 {
45 if (_size.X() < 0 || _size.Y() < 0 || _size.Z() < 0)
46 {
47 gzerr << "Box shape does not support negative size\n";
48 return;
49 }
50 ignition::math::Vector3d size = _size;
51 if (ignition::math::equal(size.X(), 0.0))
52 {
53 // Warn user, but still create shape with very small value
54 // otherwise later resize operations using setLocalScaling
55 // will not be possible
56 gzwarn << "Setting box shape's x to zero \n";
57 size.X() = 1e-4;
58 }
59 if (ignition::math::equal(size.Y(), 0.0))
60 {
61 gzwarn << "Setting box shape's y to zero \n";
62 size.Y() = 1e-4;
63 }
64 if (ignition::math::equal(size.Z(), 0.0))
65 {
66 gzwarn << "Setting box shape's z to zero \n";
67 size.Z() = 1e-4;
68 }
69
70 BoxShape::SetSize(size);
71
72 SimbodyCollisionPtr bParent;
73 bParent = boost::dynamic_pointer_cast<SimbodyCollision>(
74 this->collisionParent);
75 }
76 };
78 }
79}
80#endif
Box geometry primitive.
Definition BoxShape.hh:35
virtual void SetSize(const ignition::math::Vector3d &_size)
Set the size of the box.
CollisionPtr collisionParent
This shape's collision parent.
Definition Shape.hh:73
Simbody box collision.
Definition SimbodyBoxShape.hh:34
void SetSize(const ignition::math::Vector3d &_size)
Set the size of the box.
Definition SimbodyBoxShape.hh:43
SimbodyBoxShape(CollisionPtr _parent)
Constructor.
Definition SimbodyBoxShape.hh:36
virtual ~SimbodyBoxShape()
Destructor.
Definition SimbodyBoxShape.hh:40
#define gzerr
Output an error message.
Definition Console.hh:50
#define gzwarn
Output a warning message.
Definition Console.hh:47
boost::shared_ptr< SimbodyCollision > SimbodyCollisionPtr
Definition SimbodyTypes.hh:44
boost::shared_ptr< Collision > CollisionPtr
Definition PhysicsTypes.hh:113
Forward declarations for the common classes.
Definition Animation.hh:27