VR-Forces 4.0.4 Class Documentation
include/vrfVrlSharedSource/DtVrfVrlinkCircleVertexVisualizer.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2012 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtCircleVertexVisualizer.h,v $ $Revision: 1.2 $ $State: Exp $
00007 ******************************************************************************/
00008 
00011 
00012 #pragma once
00013 
00014 #include <vrfVrlSharedSource/vrfProtocol.h>
00015 #include <vrfGuiCore/DtCircleVertexVisualizer.h>
00016 #include <vrvVrl/DtVrlinkConnection.h>
00017 #include <vrvVrl/DtVrlinkTacticalGraphicIndicatorVisualizer.h>
00018 #include <vrvCore/DtControlPointWidget.h>
00019 #include <vrvCore/DtWidgetAgent.hpp>
00020 
00021 namespace makVrf 
00022 {
00023    namespace VRF_PROTOCOL_NAMESPACE
00024    {
00025       class DtVrfVrlinkCircleVertexVisualizer : public DtCircleVertexVisualizer
00026       {
00027       public:
00028          DtVrfVrlinkCircleVertexVisualizer(makVrv::DtBaseConnection& simulation, makVrv::DtStateListener& listener,
00029             int modelSet)
00030          : DtCircleVertexVisualizer(simulation, listener, modelSet)
00031          {
00032          }
00033 
00034          virtual ~DtVrfVrlinkCircleVertexVisualizer()
00035          {
00036          }
00037 
00038          virtual const makVrv::DtCoordinateSystem* coordinateSystem() const
00039          {
00040             return &((makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection&)mySimulation).coordinateSystem();
00041          }
00042 
00043          virtual DtVector xPoint() const
00044          {
00045             if (coordinateSystem())
00046             {
00047                DtVector geoc;
00048 
00049                coordinateSystem()->netToLocalPos(DtCircleVertexVisualizer::xPoint(), geoc);
00050 
00051                return geoc;
00052             }
00053 
00054             return DtCircleVertexVisualizer::xPoint();
00055          }
00056 
00057          virtual DtVector yPoint() const
00058          {
00059             if (coordinateSystem())
00060             {
00061                DtVector geoc;
00062 
00063                coordinateSystem()->netToLocalPos(DtCircleVertexVisualizer::yPoint(), geoc);
00064 
00065                return geoc;
00066             }
00067 
00068             return DtCircleVertexVisualizer::yPoint();
00069          }
00070 
00071          virtual void setControlPoints( 
00072             const makVrv::DtEnvironmentalStateListener::ControlPointsList& pts)
00073          {
00074             if (coordinateSystem())
00075             {
00076                int iLimit = std::min(myVertexList.size(), pts.size());
00077                int i;
00078 
00079                for (i = 0; i < iLimit; i++)
00080                {
00081                   DtVector local;
00082 
00083                   coordinateSystem()->netToLocalPos(pts[i], local);
00084 
00085                   if (pointIsDifferent(local, myControlPoints[i]))
00086                   {
00087                      moveControlPoint(i, local);
00088                   }
00089                }
00090             }
00091             else
00092             {
00093                DtCircleVertexVisualizer::setControlPoints(pts);
00094             }
00095          }
00096 
00097          virtual void setControlPoints()
00098          {
00099             while (myVertexList.size())
00100             {
00101                removeControlPoint(0);
00102             }
00103 
00104             std::vector<makVrv::DtUniqueID>::const_iterator idIter = myVertexElementIDs.begin();
00105             std::vector<makVrv::DtUniqueID>::const_iterator idIterEnd = myVertexElementIDs.end();
00106             std::vector<DtVector>::const_iterator i = environmentalStateListener().controlPoints().begin();
00107             std::vector<DtVector>::const_iterator e = environmentalStateListener().controlPoints().end(); 
00108             DtVector local;
00109 
00110             for(; i != e && idIter != idIterEnd;++i, ++idIter)
00111             {
00112                coordinateSystem()->netToLocalPos(*i, local);
00113 
00114                addControlPoint(local,  *idIter);
00115             }
00116          }
00117       };
00118 
00119       typedef makVrv::DtStateVisualizerCreatorTemplate<DtVrfVrlinkCircleVertexVisualizer>
00120          DtVrfVrlinkCircleVertexVisualizerCreator;
00121    }
00122 
00124    class MyControlPointWidget : public makVrv::DtControlPointWidget
00125    {
00126    public:
00127       MyControlPointWidget(int modelSet,  makVrv::DtAgentManagerInterface& sceneInterface) : DtControlPointWidget(modelSet, sceneInterface) {};
00128 
00129       void setOrderGroup(int i)
00130       {
00131          if (myWidgetAgent)
00132          {
00133             myWidgetAgent->setOrderGroup(i);
00134             myPointWidgetAgent->setOrderGroup(i);
00135          }
00136       }
00137    };
00138 
00139 
00140    class DtVrfVrlinkEnvironmentalIndicatorVisualizer : public makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkTacticalGraphicIndicatorVisualizer
00141    {
00142    public:
00144       DtVrfVrlinkEnvironmentalIndicatorVisualizer( makVrv::DtBaseConnection& conn, makVrv::DtStateListener& listener, int modelSet)
00145          : makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkTacticalGraphicIndicatorVisualizer(conn, listener, modelSet)
00146       {
00147       }
00148 
00150       virtual ~DtVrfVrlinkEnvironmentalIndicatorVisualizer()
00151       {
00152       }
00153 
00154    protected:
00155       virtual void createIndicator()
00156       {
00157          makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkTacticalGraphicIndicatorVisualizer::createIndicator();
00158 
00159          if (myIndicator)
00160          {
00161             ((MyControlPointWidget*)myIndicator)->setOrderGroup(3);
00162          }
00163       }
00164    };
00165 
00166    typedef makVrv::DtStateVisualizerCreatorTemplate<DtVrfVrlinkEnvironmentalIndicatorVisualizer>
00167       DtVrfVrlinkEnvironmentalIndicatorVisualizerCreator;
00168 }

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)