00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <PVLE/Config.h>
00028
00029 #ifdef PVLE_PHYSICS_KEEP_DEPRECATED_TRANSFORMS
00030
00031 #ifndef PHY_TRANSFORM_H
00032 #define PHY_TRANSFORM_H
00033
00034 #include <PVLE/Export.h>
00035 #include <PVLE/Physics/Geom.h>
00036
00037 namespace Physics {
00038
00049 class PVLE_EXPORT Transform : public Geom {
00050 public:
00052 Transform(Geom * pGeom = NULL) {
00053 id = dCreateGeomTransform(0); dGeomTransformSetCleanup(id, 0); dGeomTransformSetInfo(id, 1);
00054 dGeomSetData(id, this);
00055 if (pGeom) setEncapsulated(pGeom);
00056 }
00058 Transform(Geom * pGeom, const osg::Matrix & mat) {
00059 Transform::Transform(pGeom);
00060 setMatrix(mat);
00061 }
00062
00063 virtual Transform * asTransform() { return this; }
00064
00065 virtual osg::Matrix getMatrix() const {
00066 if (!pEncapsulated) return toGraphMatRotationPosition(dGeomGetRotation(id), dGeomGetPosition(id));
00067 return pEncapsulated->getMatrix() * toGraphMatRotationPosition(dGeomGetRotation(id), dGeomGetPosition(id));
00068 }
00069
00070 void setEncapsulated(Geom * pGeom);
00071 Geom * getEncapsulated() { return pEncapsulated.get(); }
00072
00073 protected:
00074 osg::ref_ptr<Geom> pEncapsulated;
00075 };
00076
00077 }
00078
00079 #endif // PHY_TRANSFORM_H
00080
00081 #endif // PVLE_PHYSICS_KEEP_DEPRECATED_TRANSFORMS