00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "controler-types.hh"
00026 #include "precompile-aimed-point.hh"
00027 #include "parameter-aimed-position.hh"
00028 #include <cassert>
00029
00030 CPrecompileAimedPoint::CPrecompileAimedPoint(CParameterAimedPoint*
00031 AParameterAimedPoint,
00032 CParameterAimedPosition*
00033 AParameterAimedPosition) :
00034 FParameterAimedPoint (AParameterAimedPoint),
00035 FParameterAimedPosition(AParameterAimedPosition)
00036 {
00037 assert(FParameterAimedPoint!=NULL);
00038 assert(FParameterAimedPosition!=NULL);
00039
00040 FParameterAimedPoint->addPrecompileToUpdate(this);
00041 FParameterAimedPosition->addPrecompileToUpdate(this);
00042 }
00043
00044 CPrecompileAimedPoint::
00045 CPrecompileAimedPoint(const CPrecompileAimedPoint & APrecompile) :
00046 CPrecompile (APrecompile),
00047 FParameterAimedPoint (static_cast<CParameterAimedPoint*>
00048 (APrecompile.FParameterAimedPoint->copy())),
00049 FParameterAimedPosition(APrecompile.FParameterAimedPosition)
00050 {
00051 assert(FParameterAimedPoint!=NULL);
00052 assert(FParameterAimedPosition!=NULL);
00053
00054 FParameterAimedPoint->addPrecompileToUpdate(this);
00055 FParameterAimedPosition->addPrecompileToUpdate(this);
00056 }
00057
00058 CPrecompileAimedPoint::~CPrecompileAimedPoint()
00059 {
00060 FParameterAimedPoint->removePrecompileToUpdate(this);
00061 FParameterAimedPosition->removePrecompileToUpdate(this);
00062 }
00063
00064 CPrecompile* CPrecompileAimedPoint::copy() const
00065 { return new CPrecompileAimedPoint(*this); }
00066
00067 void CPrecompileAimedPoint::setParameter(CParameter* AParameter)
00068 {
00069 switch (AParameter->getType())
00070 {
00071 case PARAMETER_AIMED_POINT:
00072 setAimedPoint(static_cast<CParameterAimedPoint*>(AParameter));
00073 break;
00074 case PARAMETER_AIMED_POSITION:
00075 setAimedPosition(static_cast<CParameterAimedPosition*>(AParameter));
00076 break;
00077 }
00078 }
00079
00080 CParameter* CPrecompileAimedPoint::getParameter() const
00081 { return FParameterAimedPoint; }
00082
00083 void CPrecompileAimedPoint::setAimedPosition(CParameterAimedPosition*
00084 APosition)
00085 {
00086 assert(APosition != NULL);
00087 APosition->addPrecompileToUpdate(this);
00088 FParameterAimedPosition->removePrecompileToUpdate(this);
00089 FParameterAimedPosition = APosition;
00090 setToUpdate();
00091 }
00092
00093 void CPrecompileAimedPoint::setAimedPoint(CParameterAimedPoint* APoint)
00094 {
00095 assert(APoint != NULL);
00096 APoint->addPrecompileToUpdate(this);
00097 FParameterAimedPoint->removePrecompileToUpdate(this);
00098 FParameterAimedPoint = APoint;
00099 setToUpdate();
00100 }
00101
00102 TPrecompile CPrecompileAimedPoint::getType() const
00103 { return PRECOMPILE_AIMED_POINT; }
00104
00105 void CPrecompileAimedPoint::drawModel()
00106 {
00107 const float size = FParameterAimedPoint->getLGAimedPoint();
00108
00109 glLineWidth(FParameterAimedPoint->getLWAimedPoint());
00110 glColor3fv (FParameterAimedPoint->getCLAimedPoint());
00111
00112 glPushMatrix();
00113
00114 glTranslatef(FParameterAimedPosition->getLookAt(0),
00115 FParameterAimedPosition->getLookAt(1),
00116 FParameterAimedPosition->getLookAt(2));
00117
00118 glBegin(GL_LINES);
00119
00120 glVertex3f( size,-size, 0); glVertex3f(-size, size, 0);
00121 glVertex3f(-size,-size, 0); glVertex3f( size, size, 0);
00122 glVertex3f( 0, 0, 0); glVertex3f( 0, 0, size);
00123
00124 glEnd();
00125
00126 glPopMatrix();
00127 }
00128