![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999-2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: baseMountCtlr.h,v $ $Revision: 1.26 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtBaseMountingController_H_ 00016 #define DtBaseMountingController_H_ 00017 00018 00019 #include "vrfobjcore/cntrlCmpnt.h" 00020 #include <vlpi/disEnums.h> 00021 00022 class DtAnalogInputPort; 00023 class DtConstrainedAnalogOutputPort; 00024 class DtIntegerInputPort; 00025 00034 #include "vrfmodel/vrfmodelDefines.h" 00035 class DT_DLL_vrfmodel DtBaseMountingController : public DtControllerComponent 00036 { 00037 00038 public: 00039 00042 DtBaseMountingController(const DtString& name, 00043 DtVrfObject* owner, 00044 DtSimManager* simManager, 00045 DtComponentDescriptor* desc = 0, 00046 DtReaderWriterRegistry* parentRegistry = 0); 00047 00049 virtual ~DtBaseMountingController(); 00050 00052 virtual bool postAddComponentsInit(); 00053 00056 virtual DtString type() const; 00057 00059 virtual DtOutputPortGroup* mountingControlPortGroup(); 00060 00062 virtual DtInputPortGroup* azimuthInfoPortGroup(); 00063 00065 virtual DtInputPortGroup* elevationInfoPortGroup(); 00066 00068 virtual void tick(); 00069 00088 virtual void reorientMounting(); 00089 00093 virtual void setDesiredAzimuth(DtReal desiredAzimuth); 00094 virtual DtReal desiredAzimuth(); 00096 00100 virtual void setDesiredElevation(DtReal desiredElevation); 00101 virtual DtReal desiredElevation(); 00103 00104 virtual void findDesiredAzimuthAndElevation(); 00105 00112 virtual bool desiredOrientationIsInRange(double& azimuthOutOfRangeBy, 00113 double& elevationOutOfRangeBy, double additionalAzimuthMargin = 0.0, 00114 double additionalElevationMargin = 0.0); 00115 00118 virtual bool createAzimuthPort(); 00119 virtual DtConstrainedAnalogOutputPort * azimuthPort() const; 00120 00121 virtual bool createElevationPort(); 00122 virtual DtConstrainedAnalogOutputPort * elevationPort() const; 00123 00125 virtual bool createAzimuthInfoPorts(); 00126 00128 virtual bool createElevationInfoPorts(); 00129 00138 virtual double approximateMountSwing(double angleChange, double maxRate); 00139 00143 static DtSimComponent * creator(const DtString& name, 00144 DtVrfObject* owner, 00145 DtSimManager* simManager, 00146 DtComponentDescriptor* desc = 0, 00147 DtReaderWriterRegistry* parentRegistry = 0); 00148 00149 protected: 00150 00152 virtual bool createPortGroups(); 00153 00155 virtual bool createPorts(); 00156 00157 protected: 00158 00160 DtBaseMountingController(); 00161 00163 DtBaseMountingController(const DtBaseMountingController & orig); 00164 00166 const DtBaseMountingController & operator=(const DtBaseMountingController & 00167 orig); 00168 00169 protected: 00170 00173 00177 DtInputPortGroup* myAzimuthInfoPortGroup; 00178 00184 DtAnalogInputPort* myNominalAzimuthPort; 00185 00191 DtAnalogInputPort* myAzimuthRangePort; 00192 00198 DtAnalogInputPort* myMaxAzimuthRatePort; 00199 00205 DtIntegerInputPort* myAzimuthPartTypePort; 00206 00210 DtInputPortGroup* myElevationInfoPortGroup; 00211 00217 DtAnalogInputPort* myNominalElevationPort; 00218 00224 DtAnalogInputPort* myElevationRangePort; 00225 00231 DtAnalogInputPort* myMaxElevationRatePort; 00232 00238 DtIntegerInputPort* myElevationPartTypePort; 00239 00243 DtOutputPortGroup* myMountingControlPortGroup; 00244 00250 DtConstrainedAnalogOutputPort* myAzimuthPort; 00251 00257 DtConstrainedAnalogOutputPort* myElevationPort; 00258 00260 00261 DtArticulatedPartStateRepository * myAzimuthMountPart; 00262 DtArticulatedPartStateRepository * myElevationMountPart; 00263 DtArticulatedPartStateRepository * myChildSimBody; 00264 00266 DtReal myDesiredAzimuth; 00268 DtReal myDesiredElevation; 00269 00273 DtReal myAngleApproxMargin; 00274 00275 }; 00276 00277 #endif