VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtElementData.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2009 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtElementData.h,v $ $Revision: 1.2 $ $State: Exp $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 #include <vrvCore/vrvCore.h>
00015 #include <vrvCore/DtUniqueID.h>
00016 #include <vrvCore/DtElementEntry.h>
00017 
00018 #include <boost/signals.hpp>
00019 #include <boost/unordered_map.hpp>
00020 
00021 namespace makVrv
00022 {
00023    class DtElementChanges;
00024    class DtElementEntry;
00025    class DtElementAttribute;
00026    class DtDe;
00027 
00031    class DT_DLL_VRVCORE DtElementData
00032    {
00033    public:
00034 
00035       //A list of scene object Ids.
00036       typedef std::vector<DtUniqueID> SceneObjectIdList;
00037 
00039       typedef boost::unordered_map<DtElementID, DtElementEntry*> ElementEntryMap;
00040       typedef boost::unordered_map<DtElementID, SceneObjectIdList> 
00041          ElementToSceneObjectMap;
00042 
00044 
00045       typedef std::vector<DtElementEntry*> ElementList;
00046       typedef std::vector<DtElementID> UniqueIdList;
00047       typedef std::vector<DtElementAttribute*> AttributeList;
00048       typedef std::pair<DtElementEntry*,AttributeList> EntryAttributes;
00049       typedef std::vector<EntryAttributes> EntryAttributesList;
00051 
00053       DtElementData(DtDe& de);
00054 
00056       ~DtElementData();
00057 
00059       void applyChanges(const DtElementChanges& changes);
00060 
00062       void requestAttributeChange(const DtElementEntry& entry, 
00063          DtElementAttribute* atr);
00064 
00066       const ElementEntryMap& elements() const;
00067 
00069       const ElementToSceneObjectMap& elementToSceneObjectMap() const;
00070 
00072       DtElementEntry* findElement(DtElementID id );
00073 
00076       void findAll(DtElementEntry::ElementType type, 
00077          ElementList& outVector, bool sort = true);
00078 
00081       void findAll(const std::vector<DtElementEntry::ElementType>& types,  
00082          ElementList& outVector, bool sort = true);
00083 
00086       void findAll(ElementList& outVector, bool sort = true);
00087 
00088 
00091       virtual void addElementID( const DtElementID& elementID, 
00092          const DtUniqueID& sceneObjectID, int modelSet );
00093 
00097       virtual void addElementID( const DtElementID& elementID, 
00098          const DtUniqueID& sceneObjectID );
00099 
00101       virtual void removeElementID( const DtElementID& elementID, 
00102          const DtUniqueID& sceneObjectID, int modelSet );
00103 
00104       virtual void removeElementID( const DtElementID& elementID, 
00105          const DtUniqueID& sceneObjectID);
00106 
00110       virtual void getSceneObjectIds( const DtElementID& elementID, 
00111          SceneObjectIdList& outputList,
00112          int modelSet = -1 /* all modelSets */ ) const;
00113 
00115       virtual DtElementID elementId( const DtUniqueID& sceneObjectID ) const;
00116 
00117 
00119       boost::signal< void (const ElementList&) > signal_elementsAdded;
00120 
00122       boost::signal< void (const UniqueIdList&) > signal_elementsToBeRemoved;
00123 
00125       boost::signal< void (const EntryAttributesList&) > signal_attributesChanged;
00126 
00127    protected:
00128 
00129       typedef boost::unordered_map<int, ElementToSceneObjectMap>
00130          ModelSetToElementSceneObjectMap;
00131       typedef boost::unordered_map<DtUniqueID, DtElementID> 
00132          SceneObjectToElementMap;
00133 
00134       DtDe& myDe;
00135       ElementEntryMap myElements;
00136 
00137       // map to go from element ID to scene object IDs
00138       ElementToSceneObjectMap myElementToSceneObjectMap;
00139 
00140       // map to go from element ID and model set to scene object id(s)
00141       ModelSetToElementSceneObjectMap myModelSetToElementSceneObjectMap;
00142 
00143       // map to go from scene object id to element id
00144       SceneObjectToElementMap mySceneObjectToElementMap;     
00145 
00146    };
00147 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)