X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fhla%2FRTI13ObjectInstance.hxx;h=cfba387223ea4ef032eeba9ae2794a5feebcc2d4;hb=a563cfd0f2a5e68ad0eab1a371b141fab4ddd59e;hp=654bff92cbc1755812ce7414342678cd4f2d782b;hpb=bd999ca090853e68acb7b0f4aab3d875afd8c010;p=simgear.git diff --git a/simgear/hla/RTI13ObjectInstance.hxx b/simgear/hla/RTI13ObjectInstance.hxx index 654bff92..cfba3872 100644 --- a/simgear/hla/RTI13ObjectInstance.hxx +++ b/simgear/hla/RTI13ObjectInstance.hxx @@ -37,9 +37,12 @@ namespace simgear { class RTI13Ambassador; class RTI13ObjectClass; +typedef std::pair RTI13AttributeHandleDataPair; +typedef std::list RTI13AttributeHandleDataPairList; + class RTI13ObjectInstance : public RTIObjectInstance { public: - RTI13ObjectInstance(const RTI::ObjectHandle& handle, HLAObjectInstance* hlaObjectInstance, const RTI13ObjectClass* objectClass, RTI13Ambassador* ambassador, bool owned); + RTI13ObjectInstance(const RTI::ObjectHandle& handle, HLAObjectInstance* hlaObjectInstance, const RTI13ObjectClass* objectClass, RTI13Ambassador* ambassador); virtual ~RTI13ObjectInstance(); const RTI::ObjectHandle& getHandle() const @@ -52,8 +55,6 @@ public: unsigned getNumAttributes() const { return get13ObjectClass()->getNumAttributes(); } - unsigned getAttributeIndex(const std::string& name) const - { return get13ObjectClass()->getAttributeIndex(name); } unsigned getAttributeIndex(const RTI::AttributeHandle& handle) const { return get13ObjectClass()->getAttributeIndex(handle); } RTI::AttributeHandle getAttributeHandle(unsigned index) const @@ -65,27 +66,31 @@ public: virtual void deleteObjectInstance(const SGTimeStamp& timeStamp, const RTIData& tag); virtual void localDeleteObjectInstance(); - void reflectAttributeValues(const RTI::AttributeHandleValuePairSet& attributeValuePairSet, const RTIData& tag); - void reflectAttributeValues(const RTI::AttributeHandleValuePairSet& attributeValuePairSet, const SGTimeStamp& timeStamp, const RTIData& tag); - virtual void requestObjectAttributeValueUpdate(); - void provideAttributeValueUpdate(const RTI::AttributeHandleSet& attributes); + void reflectAttributeValues(RTI13AttributeHandleDataPairList& attributeHandleDataPairList, + const RTIData& tag, HLAIndexList& indexPool); + void reflectAttributeValues(RTI13AttributeHandleDataPairList& attributeHandleDataPairList, + const SGTimeStamp& timeStamp, const RTIData& tag, HLAIndexList& indexPool); + virtual void requestObjectAttributeValueUpdate(const HLAIndexList& indexList); + void provideAttributeValueUpdate(const std::vector& attributes); virtual void updateAttributeValues(const RTIData& tag); virtual void updateAttributeValues(const SGTimeStamp& timeStamp, const RTIData& tag); - void attributesInScope(const RTI::AttributeHandleSet& attributes); - void attributesOutOfScope(const RTI::AttributeHandleSet& attributes); + virtual bool isAttributeOwnedByFederate(unsigned index) const; + + void attributesInScope(const std::vector& attributes); + void attributesOutOfScope(const std::vector& attributes); - void turnUpdatesOnForObjectInstance(const RTI::AttributeHandleSet& attributes); - void turnUpdatesOffForObjectInstance(const RTI::AttributeHandleSet& attributes); + void turnUpdatesOnForObjectInstance(const std::vector& attributes); + void turnUpdatesOffForObjectInstance(const std::vector& attributes); // Not yet sure what to do here. But the dispatch functions are already there - void requestAttributeOwnershipAssumption(const RTI::AttributeHandleSet& attributes, const RTIData& tag); - void attributeOwnershipDivestitureNotification(const RTI::AttributeHandleSet& attributes); - void attributeOwnershipAcquisitionNotification(const RTI::AttributeHandleSet& attributes); - void attributeOwnershipUnavailable(const RTI::AttributeHandleSet& attributes); - void requestAttributeOwnershipRelease(const RTI::AttributeHandleSet& attributes, const RTIData& tag); - void confirmAttributeOwnershipAcquisitionCancellation(const RTI::AttributeHandleSet& attributes); + void requestAttributeOwnershipAssumption(const std::vector& attributes, const RTIData& tag); + void attributeOwnershipDivestitureNotification(const std::vector& attributes); + void attributeOwnershipAcquisitionNotification(const std::vector& attributes); + void attributeOwnershipUnavailable(const std::vector& attributes); + void requestAttributeOwnershipRelease(const std::vector& attributes, const RTIData& tag); + void confirmAttributeOwnershipAcquisitionCancellation(const std::vector& attributes); void informAttributeOwnership(RTI::AttributeHandle attributeHandle, RTI::FederateHandle federateHandle); void attributeIsNotOwned(RTI::AttributeHandle attributeHandle); void attributeOwnedByRTI(RTI::AttributeHandle attributeHandle);