![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtAttachManager.h,v $ $Revision: 1.22 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvCore/vrvCore.h> 00016 #include <vrvCore/DtUniqueID.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvUtil/signalslib.h> 00019 #include <vrvCore/DtElementData.h> 00020 #include <vrvCore/DtElementEntry.h> 00021 #include <vrvCore/DtObserverObject.h> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtDriverManager; 00027 class DtObserver; 00028 00031 class DT_DLL_VRVCORE DtAttachManager : public DtVirtualBaseClass 00032 { 00033 public: 00034 00036 typedef std::vector<DtElementEntry::ElementType> ElementTypeList; 00037 typedef std::vector<int> PartList; 00038 00040 static DtAttachManager& instance(DtDe& de); 00041 00043 ~DtAttachManager(); 00044 00046 void setCurrentAttachableTypes( const ElementTypeList& currentFilterType ); 00047 00049 const ElementTypeList& currentAttachableTypes() const; 00050 00053 void getAttachableParts(DtElementID id, PartList& outputPartList) const; 00054 00056 void toggleOrientToTargetConstraint( DtObserver* observer ); 00057 00058 //Emitted when an observer's hide model flag changed 00059 boost::signal< void (DtObserver*) > signal_hideModelChanged; 00060 00061 //Emitted when an observer's attached to list changes 00062 boost::signal< void (DtObserver*) > signal_attachedToChanged; 00063 00064 //Emitted when an observer's attach type changes 00065 boost::signal< void (DtObserver*) > signal_attachTypeChanged; 00066 00067 //Emitted when an observer's attach part changes 00068 boost::signal< void (DtObserver*) > signal_attachPartChanged; 00069 00070 boost::signal< void (const ElementTypeList&) > signal_currentFilterTypeChanged; 00071 00072 protected: 00074 DtAttachManager(DtDe& de); 00075 00076 void slot_objectsRemoved(const DtElementData::UniqueIdList& removedList ); 00077 00078 protected: 00079 DtDe& myDe; 00080 ElementTypeList myCurrentFilterTypes; 00081 }; 00082 00083 }