VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtEntityFacadeCollection.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00011 
00012 #pragma once
00013 
00014 #include <vrfGuiCore/vrfGuiCore.h>
00015 #include <vrfGuiCore/DtVrfObjectFacadeInterface.h>
00016 #include <vrfGuiCore/DtEntityStateListenerExtensions.h>
00017 
00018 #include <vrvCore/DtBaseConnection.h>
00019 #include <vrvCore/DtAggregateStateListener.h>
00020 #include <vrvCore/DtSharedModelSetSettings.h>
00021 #include <vrvCore/DtVisualizerSet.h>
00022 #include <vrvUtil/DtUnicode.h>
00023 #include <vrvVrl/DtForceManager.h>
00024 
00025 #include <matrix/vlVector.h>
00026 #include <matrix/vlTaitBryan.h>
00027 
00028 #include <vlpi/entityType.h>
00029 
00030 #include <string>
00031 #include <map>
00032 
00033 class DtEntityType;
00034 
00035 namespace makVrv
00036 {
00037    class DtVisualDefinitionSet;
00038    class DtAgentManagerInterface;
00039    class DtDe;
00040    class DtBaseConnection;
00041 }
00042 
00043 namespace makVrf
00044 {
00045    class MyStateVisualizer : public makVrv::DtStateVisualizer
00046    {
00047    public:
00048       MyStateVisualizer(makVrv::DtBaseConnection& connection, makVrv::DtStateListener& listener,
00049          int modelSet) : makVrv::DtStateVisualizer(connection, listener, modelSet) {};
00050 
00051       int modelSet() const { return myModelSet; };
00052    };
00053 
00054    class DT_DLL_VRFGUICORE DtExtAggregateStateListener : public makVrv::DtAggregateStateListener, public DtEntityStateListenerExtensions
00055    {
00056    public:
00057       DtExtAggregateStateListener(makVrv::DtUniqueID id) : makVrv::DtAggregateStateListener(id),  DtEntityStateListenerExtensions(id) {};
00058       virtual ~DtExtAggregateStateListener() {};
00059    };
00060 
00061    class DT_DLL_VRFGUICORE DtEntityFacadeCollection : public DtVrfObjectFacadeInterface
00062    {
00063    public:
00064       typedef std::map<int, makVrv::DtVisualizerSet*> ModelSetMap;
00065 
00066    public:
00067       DtEntityFacadeCollection(makVrv::DtDe&, int modelSet = -1);
00068       virtual ~DtEntityFacadeCollection();
00069 
00070    public:
00072 
00074       virtual void visualize(const makVrv::DtUnicode& type, 
00075          const makVrv::DtSharedModelSetSettings::ModelSetVisualizedMap& sets);            
00076 
00077       const ModelSetMap& modelSetMap() const
00078       {
00079          return myModelSetMap;
00080       }
00081 
00082       ModelSetMap& modelSetMap()
00083       {
00084          return myModelSetMap;
00085       }
00086 
00088       virtual void setOrientation(const DtTaitBryan& orientation);
00089       
00091       virtual void setOrigin(const DtVector& v);
00092       virtual void setOrigin(const DtGeodeticCoord& v);
00093 
00095       virtual void setOriginAndSeaLevel(const DtVector& v);
00096       virtual void setOriginAndSeaLevel(const DtGeodeticCoord& v);
00097 
00099       virtual void setForceId(int);
00100       int forceId() const;
00101 
00102       virtual makVrv::DtBaseConnection& baseConnection() const;
00103       
00105       void setHatLineVisible( bool visible );
00106 
00108       virtual void setVisible(bool b);
00109 
00111       virtual void setPickable(bool b);
00112 
00114       virtual void setSelected(bool b);
00115 
00117       virtual void setOverlayName(const std::string&);
00118       virtual std::string overlayName() const;
00119 
00121       virtual void setIndicatorVisible(bool b);
00122 
00123       virtual void setUniqueID(makVrv::DtUniqueID);
00124       makVrv::DtUniqueID uniqueID() const;
00125 
00127       virtual void setWidgetEventsEnabled(bool b);
00128 
00130       virtual void setGroundClamping(bool b);
00131 
00133       virtual void setSymbolDecorationOffset(double x, double y);
00134 
00136       virtual void setAutoEnableGroundClamping(bool b);
00137 
00139       virtual void realizeFacades();
00140 
00142       virtual void unrealizeFacades();
00143 
00146       virtual bool hasProjectedModel(int modelSet) const;
00147 
00151       virtual void setElementDefinition(const makVrv::DtUnicode& elementName);      
00152       
00154       virtual const makVrv::DtUnicode& elementDefinition() const;
00155 
00158       virtual void setElementDefinition(const DtEntityType&);
00159 
00161       void setSmoothingEnabled(bool enabled);
00162 
00164       void setMotionModel(const std::string&);
00165 
00167       virtual void setHeadingIndicatorVisible(bool);
00168 
00170       virtual void setHeadingIndicatorSize(float l);
00171 
00173       //virtual bool visualDefinitionSetFor(const std::string& type, makVrv::DtVisualDefinitionSet&, int, bool& isAggregate);
00174 
00176       virtual DtVector position() const;
00177 
00178       virtual makVrv::DtUniqueID uniqueIDForModelSet(int set) const;
00179 
00181       virtual void setEffectsVisible(bool);
00182 
00185       virtual void setAltitudeAboveTerrain(double d);
00186 
00189       virtual void setAltitudeAboveSeaLevel(double d);
00190 
00192       template <typename T> bool hasVisualizer(makVrv::DtVisualizerSet* s) const
00193       {
00194          std::vector<T> visualizers;
00195          s->findVisualizersByDynamicCast(visualizers);
00196          
00197          return (visualizers.size() != 0);
00198       }
00199 
00201       virtual void setIconScale(float);
00202       template <typename T> void setIconScale(makVrv::DtVisualizerSet* s, float scale)
00203       {
00204          std::vector<T> visualizers;
00205          s->findVisualizersByDynamicCast(visualizers);            
00206          typename std::vector<T>::iterator i = visualizers.begin();
00207          typename std::vector<T>::iterator e = visualizers.end();
00208          for(;i != e; ++i)
00209          {
00210             if (*i)
00211             {
00212                (*i)->setIconScale(scale);
00213             }
00214          }
00215       }
00216 
00218       virtual void setEntityExtents(const DtVector& volume, const DtVector& offset);
00219 
00221       virtual bool hasBoundingVolumes() const;
00222 
00224       virtual void setEntityExtentsVisible(bool, int modelSet = -1);
00225       template <typename T> void setEntityExtentsVisible(makVrv::DtVisualizerSet* s, bool b, int modelSet = -1)
00226       {
00227          std::vector<T> visualizers;
00228          s->findVisualizersByDynamicCast(visualizers);            
00229          typename std::vector<T>::iterator i = visualizers.begin();
00230          typename std::vector<T>::iterator e = visualizers.end();
00231          for(;i != e; ++i)
00232          {
00233             if (*i)
00234             {
00235                if ((modelSet == -1) || (modelSet == ((MyStateVisualizer*)(*i))->modelSet()))
00236                {
00237                   (*i)->setVisible(b);
00238                }
00239             }
00240          }
00241       }
00242 
00243       template <typename T> void setScale(makVrv::DtVisualizerSet* s, float scale)
00244       {
00245          std::vector<T> visualizers;
00246          s->findVisualizersByDynamicCast(visualizers);            
00247          typename std::vector<T>::iterator i = visualizers.begin();
00248          typename std::vector<T>::iterator e = visualizers.end();
00249          for(;i != e; ++i)
00250          {
00251             if (*i)
00252             {
00253                (*i)->setScale(scale);
00254             }
00255          }
00256       }
00257 
00258       template <typename T> void setForceColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color)
00259       {
00260          std::vector<T> visualizers;
00261          s->findVisualizersByDynamicCast(visualizers);            
00262          typename std::vector<T>::iterator i = visualizers.begin();
00263          typename std::vector<T>::iterator e = visualizers.end();
00264          for(;i != e; ++i)
00265          {
00266             if (*i)
00267             {
00268                (*i)->setForceColor(color.R, color.G, color.B, color.A);
00269             }
00270          }
00271       }
00272 
00273       template <typename T> void setColor(makVrv::DtVisualizerSet* s, makVrv::DtForceManager::RGBAColor color)
00274       {
00275          std::vector<T> visualizers;
00276          s->findVisualizersByDynamicCast(visualizers);            
00277          typename std::vector<T>::iterator i = visualizers.begin();
00278          typename std::vector<T>::iterator e = visualizers.end();
00279          for(;i != e; ++i)
00280          {
00281             if (*i)
00282             {
00283                (*i)->setColor(color.R, color.G, color.B, color.A);
00284             }
00285          }
00286       }
00287 
00289       virtual void setDisplayName( const std::string& displayName );
00290 
00291       virtual void setSymbolDecorationsVisible(bool);
00292 
00293       virtual bool isAggregate() const
00294       {
00295          return myIsAggregate;
00296       }
00297 
00299    protected:
00301       DtEntityType                           myEntityType;
00302       makVrv::DtUnicode                      myElementDefinition;
00303 
00304       makVrv::DtBaseConnection* myConnection;
00305 
00308       DtExtAggregateStateListener         myListener;
00309       ModelSetMap myModelSetMap;
00310 
00311       std::string myOverlay;
00312       bool myIsAggregate;
00313    };
00314 }
00315 

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)