]> git.mxchange.org Git - simgear.git/blobdiff - simgear/hla/RTIObjectInstance.hxx
hla: Initially request update for subscribed unowned attributes.
[simgear.git] / simgear / hla / RTIObjectInstance.hxx
index fb8f096a39546324ef7235466149fd9bb6e9deef..e3e37b6d27e25d32e48a53c5bcc025f8a91fc2ec 100644 (file)
@@ -50,9 +50,6 @@ public:
     unsigned getAttributeIndex(const std::string& name) const;
     std::string getAttributeName(unsigned index) const;
 
-    // FIXME: factor out an ambassador base
-    virtual void addToRequestQueue() = 0;
-
     virtual void deleteObjectInstance(const RTIData& tag) = 0;
     virtual void deleteObjectInstance(const SGTimeStamp& timeStamp, const RTIData& tag) = 0;
     virtual void localDeleteObjectInstance() = 0;
@@ -136,6 +133,8 @@ public:
             } else {
                 _attributeData[i].setUpdateEnabled(false);
                 _attributeData[i].setOwned(false);
+                if (getAttributeSubscribed(i))
+                    _attributeData[i].setRequestUpdate(true);
             }
         }
         _attributeData.resize(numAttributes);
@@ -143,9 +142,13 @@ public:
             if (getAttributePublished(i)) {
                 _attributeData[i].setUpdateEnabled(true);
                 _attributeData[i].setOwned(owned);
+                if (!owned && getAttributeSubscribed(i))
+                    _attributeData[i].setRequestUpdate(true);
             } else {
                 _attributeData[i].setUpdateEnabled(false);
                 _attributeData[i].setOwned(false);
+                if (getAttributeSubscribed(i))
+                    _attributeData[i].setRequestUpdate(true);
             }
         }
     }
@@ -213,7 +216,6 @@ public:
         if (request) {
             if (!_pendingAttributeUpdateRequest) {
                 _pendingAttributeUpdateRequest = true;
-                addToRequestQueue();
             }
         }
     }