]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/bvh/BVHMotionTransform.hxx
hla: Provide a directly property based api for property data element.
[simgear.git] / simgear / scene / bvh / BVHMotionTransform.hxx
index 6e51e7eeadad998b5c12931c1cc9e4db61a7ca47..d1a401e38f704141778938e91cb37591292ff843 100644 (file)
@@ -50,6 +50,11 @@ public:
     const double& getReferenceTime() const
     { return _referenceTime; }
 
+    void setStartTime(const double& startTime)
+    { _startTime = startTime; }
+    const double& getStartTime() const
+    { return _startTime; }
+
     void setEndTime(const double& endTime)
     { _endTime = endTime; }
     const double& getEndTime() const
@@ -57,9 +62,9 @@ public:
     
     SGMatrixd getToWorldTransform(const double& t) const
     {
-        double dt = t - _referenceTime;
-        if (0 == dt)
+        if (t == _referenceTime)
             return _toWorldReference;
+        double dt = t - _referenceTime;
         SGMatrixd matrix(_toWorldReference);
         matrix.postMultRotate(SGQuatd::fromAngleAxis(dt*_angularVelocity));
         matrix.postMultTranslate(dt*_linearVelocity);
@@ -67,9 +72,9 @@ public:
     }
     SGMatrixd getToLocalTransform(const double& t) const
     {
-        double dt = _referenceTime - t;
-        if (0 == dt)
+        if (t == _referenceTime)
             return _toLocalReference;
+        double dt = _referenceTime - t;
         SGMatrixd matrix(_toLocalReference);
         matrix.preMultRotate(SGQuatd::fromAngleAxis(dt*_angularVelocity));
         matrix.preMultTranslate(dt*_linearVelocity);
@@ -92,6 +97,11 @@ public:
         return SGSphered(center, radius);
     }
 
+    void setId(Id id)
+    { _id = id; }
+    Id getId() const
+    { return _id; }
+
 private:
     virtual SGSphered computeBoundingSphere() const;
     void updateAmplificationFactors();
@@ -105,7 +115,10 @@ private:
     SGVec3d _angularVelocity;
 
     double _referenceTime;
+    double _startTime;
     double _endTime;
+
+    Id _id;
 };
 
 }