]> git.mxchange.org Git - simgear.git/commitdiff
More data to attach to the user data field.
authorfrohlich <frohlich>
Sun, 1 Mar 2009 12:37:50 +0000 (12:37 +0000)
committerTim Moore <timoore@redhat.com>
Thu, 5 Mar 2009 09:32:05 +0000 (10:32 +0100)
Modified Files:
  simgear/scene/util/SGSceneUserData.hxx

simgear/scene/util/SGSceneUserData.hxx

index 8234ef488269a0e35ceb3e6df2383bd0cc931fd0..6acd50685f9d3eac68d0ab219a8ff53eed83eb32 100644 (file)
@@ -25,6 +25,7 @@
 #include <vector>
 #include <osg/Referenced>
 #include <osg/Node>
+#include <simgear/scene/bvh/BVHNode.hxx>
 #include "SGPickCallback.hxx"
 
 class SGSceneUserData : public osg::Referenced {
@@ -38,8 +39,33 @@ public:
   SGPickCallback* getPickCallback(unsigned i) const;
   void setPickCallback(SGPickCallback* pickCallback);
   void addPickCallback(SGPickCallback* pickCallback);
+
+  const simgear::BVHNode* getBVHNode() const
+  { return _bvhNode; }
+  simgear::BVHNode* getBVHNode()
+  { return _bvhNode; }
+  void setBVHNode(simgear::BVHNode* bvhNode)
+  { _bvhNode = bvhNode; }
+
+  struct Velocity : public SGReferenced {
+    Velocity() : linear(SGVec3d::zeros()), angular(SGVec3d::zeros()) {}
+    SGVec3d linear;
+    SGVec3d angular;
+  };
+  const Velocity* getVelocity() const
+  { return _velocity; }
+  Velocity* getOrCreateVelocity()
+  { if (!_velocity) _velocity = new Velocity; return _velocity; }
+  void setVelocity(Velocity* velocity)
+  { _velocity = velocity; }
   
 private:
+  // If this node has a collision tree attached, it is stored here
+  SGSharedPtr<simgear::BVHNode> _bvhNode;
+
+  // Velocity in the childs local coordinate system
+  SGSharedPtr<Velocity> _velocity;
+
   /// Scene interaction callbacks
   std::vector<SGSharedPtr<SGPickCallback> > _pickCallbacks;
 };