passivebox.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __PASSIVEBOX_H
00025 #define __PASSIVEBOX_H
00026
00027 #include <stdio.h>
00028 #include <cmath>
00029
00030 #include "primitive.h"
00031 #include "abstractobstacle.h"
00032
00033 namespace lpzrobots {
00034
00035
00036
00037
00038 class PassiveBox : public AbstractObstacle{
00039 osg::Vec3 dimension;
00040 double mass;
00041 int texture;
00042
00043
00044 Box* box;
00045
00046
00047 public:
00048
00049
00050
00051
00052 PassiveBox(const OdeHandle& odeHandle, const OsgHandle& osgHandle,
00053 const osg::Vec3& dimension = osg::Vec3(1.0, 1.0, 1.0), double mass = 1.0):
00054 AbstractObstacle::AbstractObstacle(odeHandle, osgHandle), dimension(dimension), mass(mass) {
00055 box = new Box(dimension.x(), dimension.y(), dimension.z());
00056 obst.push_back(box);
00057 obstacle_exists=false;
00058 };
00059
00060
00061 virtual void setPose(const osg::Matrix& pose){
00062 this->pose = osg::Matrix::translate(0,0,dimension.z()/2) * pose;
00063 if (!obstacle_exists) {
00064 create();
00065 }
00066 box->setPose(pose);
00067 };
00068
00069
00070 virtual Primitive* getMainPrimitive() const { return box; }
00071
00072 protected:
00073 virtual void create(){
00074 box->setTextures(getTextures(0));
00075 if (mass==0.0) {
00076 box->init(odeHandle, mass, osgHandle, Primitive::Geom | Primitive::Draw);
00077 } else {
00078 box->init(odeHandle, mass, osgHandle);
00079 }
00080
00081
00082 obstacle_exists=true;
00083 };
00084
00085 };
00086
00087 }
00088
00089 #endif
00090