![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2012 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 00009 00010 #pragma once 00011 00012 #include <vrvCore/vrvCore.h> 00013 #include <vrvCore/DtAttachableIntervisibilityUpdater.h> 00014 #include <vrvCore/DtIntersector.h> 00015 #include <vrvUtil/DtVirtualBaseClass.h> 00016 00017 #include <boost/unordered_map.hpp> 00018 00019 namespace makVrv 00020 { 00021 00022 class DtElementEntry; 00023 class DtOverlayEllipseArcModelAgent; 00024 class DtExtrudedCircleModelAgent; 00025 class DtMultiLineModelAgent; 00026 class DtSceneObjectAgent; 00027 00035 class DT_DLL_VRVCORE DtAttachableEntityFanUpdater : public DtAttachableIntervisibilityUpdater 00036 { 00037 public: 00038 00041 DtAttachableEntityFanUpdater( DtDe& de, DtElementID id, bool doNotAddToMgr = false ); 00042 00044 virtual ~DtAttachableEntityFanUpdater(); 00045 00046 virtual void setEntityFanUpdateRate( double d ); 00047 00049 virtual void setCircleAgent( DtOverlayEllipseArcModelAgent* ); 00050 virtual void setCircleAgent( DtExtrudedCircleModelAgent* ); 00051 00053 virtual void setMultiLineModelAgent( DtMultiLineModelAgent* ); 00054 00056 virtual void setSceneObjectAgent( DtSceneObjectAgent* ); 00057 00058 protected: 00059 00060 virtual void updateSceneObject(); 00061 virtual bool doIntersection(); 00062 00064 virtual void update(); 00065 00066 virtual void update( double ); 00067 00070 virtual bool removeElement( DtElementID id, bool disconnect = true ); 00071 00073 virtual void sceneObjectRemoved( DtUniqueID ); 00074 00076 virtual bool isIntersectableObject( const DtElementEntry& ) const; 00077 00078 protected: 00079 00080 struct EntityFanIntersectionInformation : public IntersectionInformation 00081 { 00082 DtSceneObject* sceneObject; 00083 }; 00084 00086 typedef boost::unordered_map<DtElementID,EntityFanIntersectionInformation> Intersections; 00087 Intersections myIntersections; 00088 00089 double myEntityFanUpdateRate; 00090 bool myForceUpdate; 00091 double myLastRadius; 00092 00093 DtOverlayEllipseArcModelAgent* my2DCircleAgent; 00094 DtExtrudedCircleModelAgent* my3DCircleAgent; 00095 DtMultiLineModelAgent* myMultiLineModelAgent; 00096 DtSceneObjectAgent* mySceneObjectAgent; 00097 00098 DtUniqueID mySceneObjectId; 00099 00100 }; 00101 00104 class DT_DLL_VRVCORE DtAttachableEntityFanUpdaterCreator : public DtVirtualBaseClass 00105 { 00106 public: 00107 00108 virtual ~DtAttachableEntityFanUpdaterCreator(); 00109 00110 static DtAttachableEntityFanUpdaterCreator& instance(DtDe&); 00111 static void registerInstance( DtDe&, DtAttachableEntityFanUpdaterCreator* ); 00112 00113 virtual DtAttachableEntityFanUpdater* create( DtDe&, DtElementID id ); 00114 00115 protected: 00116 00117 DtAttachableEntityFanUpdaterCreator(); 00118 00119 }; 00120 00121 }