AnimatLab  2
Test
VsHudText.cpp
Go to the documentation of this file.
1 
7 #include "StdAfx.h"
8 #include "VsSimulator.h"
9 #include "VsHudText.h"
10 
11 namespace VortexAnimatSim
12 {
13  namespace Visualization
14  {
15 
23 {
24  //Default color is white
25  m_aryColor.Set(1, 1, 1, 1);
26  m_ptPosition.Set(10,10, 0); //Default to the lower left corner
27  m_strFont = "fonts/Arial.ttf";
28  m_iCharSize = 30;
29  m_strText = "";
30  m_lpDisplayData = NULL;
31  m_lpUpdateData = NULL;
32  m_fltUpdateInterval = 1;
33 }
34 
49 VsHudText::VsHudText(float *aryColor, CStdFPoint &ptPosition, std::string strFont, int iCharSize, std::string strText, std::string strDisplayTargetID, std::string strDisplayDataType, std::string strUpdateTargetID, std::string strUpdateDataType, float fltUpdateInterval)
50 {
51  m_aryColor.Set(aryColor[0], aryColor[1], aryColor[2], aryColor[3]);
52  m_ptPosition = ptPosition;
53  m_strFont = strFont;
54  m_iCharSize = iCharSize;
55  m_strText = strText;
56  m_lpDisplayData = NULL;
57  m_lpUpdateData = NULL;
58  m_strDisplayTargetID = strDisplayTargetID;
59  m_strDisplayDataType = strDisplayDataType;
60  m_strUpdateTargetID = strUpdateTargetID;
61  m_strUpdateDataType = strUpdateDataType;
62  m_fltUpdateInterval = fltUpdateInterval;
63 }
64 
72 {
73 }
74 
75 void VsHudText::Initialize(void *lpVoidProjection)
76 {
77  HudText::Initialize(lpVoidProjection);
78 
79  m_fltPrevious = -1;
80  osg::Projection *lpProjection = (osg::Projection *) (lpVoidProjection);
81  if(!lpProjection)
82  THROW_PARAM_ERROR(Vs_Err_lHudProjectionNotDefined, Vs_Err_strHudProjectionNotDefined, "ID", m_strID);
83 
84  m_osgText = new osgText::Text;
85  m_osgText->setDataVariance(osg::Object::DYNAMIC);
86  m_osgText->setColor(osg::Vec4(m_aryColor[0], m_aryColor[1], m_aryColor[2], m_aryColor[3]));
87  m_osgText->setPosition(osg::Vec3(m_ptPosition.x, m_ptPosition.y, m_ptPosition.z));
88  m_osgText->setFont(m_strFont.c_str());
89  m_osgText->setCharacterSize(m_iCharSize);
90  m_osgText->setText("");
91 
92  m_osgGeode = new osg::Geode;
93  m_osgGeode->addDrawable(m_osgText.get());
94  lpProjection->addChild(m_osgGeode.get());
95 }
96 
98 {
99  m_fltPrevious = -1;
100 }
101 
102 void VsHudText::Update()
103 {
104  char str[1024];
105 
106  if(m_osgText.valid() && m_lpDisplayData && m_lpUpdateData && (fabs(*m_lpUpdateData-m_fltPrevious) > 0.1) )
107  {
108  sprintf(str, m_strText.c_str(), *m_lpDisplayData);
109  m_osgText->setText(str);
110  m_fltPrevious = *m_lpUpdateData;
111  }
112 }
113 
114  } // Visualization
115 } //VortexAnimatSim
virtual void Initialize()
Initializes this object.
Definition: AnimatBase.cpp:573
Declares the vortex heads-up display text class.
std::string m_strID
The unique Id for this object.
Definition: AnimatBase.h:55
Classes for implementing the cm-labs vortex physics engine for AnimatLab.
virtual void ResetSimulation()
Resets the simulation back to time 0.
Definition: VsHudText.cpp:97