VR-Vantage API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
legacyStealthControl.h
Go to the documentation of this file.
1 /*********************************************************************
2  ** Copyright (c) 2014 MaK Technologies, Inc.
3  ** All rights reserved.
4  *********************************************************************/
5 /*********************************************************************
6  ** $RCSfile: absoluteVcPdu.h,v $ $Revision: 1.4 $ $State: Exp $
7  *********************************************************************/
8 
9 #pragma once
10 
11 #include <vrvVrl/vrvVrl.h>
12 
13 #include <vector>
14 #include <map>
15 #include <list>
16 #include <iosfwd>
17 
18 #include <vlutil/vlString.h>
19 #include <vlutil/vlHashlist.h>
20 #include <vlutil/vlInetAddr.h>
21 
22 #include <vl/environmentalPointRecord.h>
23 #include <vl/environmentalBoundingSphereRecord.h>
24 #include <vl/environmentalRectangularVolumeRecord.h>
25 #include <vl/hostStructs.h>
26 #include <vl/environmentalEllipsoidRecord.h>
27 #include <vl/environmentalLineRecord.h>
28 #include <vl/environmentProcessPublisher.h>
29 #include <vl/exerciseConn.h>
30 #include <vl/hostStructs.h>
31 #include <vl/pdu.h>
32 #include <vl/rprFomMapper.h>
33 #include <vl/globalObjectDesignator.h>
34 #include <vl/packets/pduHeader.h>
35 
45 
46 #include <matrix/vlVector.h>
47 #include <matrix/vlTaitBryan.h>
48 #include <matrix/vlMath.h>
49 
50 #if DtHLA
51 #include <vl/rprFomMapper.h>
52 #elif DtDIS
53 #include <vlutil/vlInetAddr.h> // for DtInetAddr
54 #endif
55 
56 #include <vlpi/disEnums.h>
57 #include <vlpi/netStructs.h>
58 
59 typedef struct
60 {
61  DtNetU32 ignoreFlags;
62  DtNetU8 turnDirection;
63  DtNetU8 moveDirection;
64  DtNetBoolean reset;
65  DtNetU8 pad2;
66  DtNetFloat64 position[3];
67  DtNetFloat64 orientation[3];
70 
71 typedef struct
72 {
73  DtNetU32 ignoreFlags;
74  DtNetFloat32 radius;
75  DtNetFloat32 bodyHeading;
76  DtNetFloat32 pitch;
77  DtNetFloat32 headingOffset;
78  DtNetFloat32 pitchOffset;
79  DtNetFloat32 roll;
80  DtNetWorldCoordinates pivotPoint;
81 
83 
85 {
88 };
89 
90 //
91 // These are the old, original versions of the netstructs. These work with Stealth 6.0
92 // and earlier. Starting with Stealth 6.0.1, these are cleaned up, renamed, and version
93 // controlled. See the new layouts below. Note that Stealth 6.0 and newer code WILL detect
94 // the lack of a valid version number and fall back to these, so it IS backward compatible.
95 //
96 typedef struct
97 {
98  DtNetU32 myId;
99  DtNetU32 myType;
100  DtNetU8 myFlags;
101  DtNetU8 myUnused[3];
103 
104 typedef struct
105 {
106  DtNetU32 myId;
107  DtNetU32 myType;
108  DtNetU8 myFlags;
109  DtNetU8 myUnused[3];
110  DtNetU32 myLayerId;
111  DtNetU32 myFree[2];
112 } DtNetSdcLayer;
113 
114 // layer definition
115 typedef struct
116 {
117  DtNetU32 myId;
118  DtNetU32 myType;
119  DtNetU8 myFlags;
120  DtNetU8 myUnused[3];
121  DtNetU32 myNameSize;
122  DtNetU32 myFree[2];
124 
125 typedef struct
126 {
127  DtNetU32 myId;
128  DtNetU32 myType;
129  DtNetU8 myFlags;
130  DtNetU8 myAttachements;
131  DtNetU8 myPercentage;
132  DtNetU8 myUnused;
133  DtNetU8 myColor[4];
134  DtNetGlobalObjectDesignator myEntityId[2];
135  DtNetU32 myObjectId[2];
136  DtNetWorldCoordinates myPosition[2];
137  DtNetWorldCoordinates myOffset;
138  DtNetU32 myFree[2];
140 
141 typedef struct
142 {
143  DtNetU32 myId;
144  DtNetU32 myType;
145  DtNetU8 myFlags;
146  DtNetU8 myAttachements;
147  DtNetU8 myPercentage;
148  DtNetU8 myUnused1;
149  DtNetU8 myColor[4];
150  DtNetGlobalObjectDesignator myEntityId[2];
151  DtNetU32 myObjectId[2];
152  DtNetWorldCoordinates myPosition[2];
153  DtNetWorldCoordinates myOffset;
154  DtNetU32 myNameSize;
155  DtNetU32 myFree[2];
157 
158 
159 typedef struct
160 {
161  DtNetU32 myId;
162  DtNetU32 myType;
163  DtNetU8 myFlags;
164  DtNetU8 myAttachements;
165  DtNetU8 myPercentage;
166  DtNetU8 myUnused;
167  DtNetU8 myColor[4];
168  DtNetGlobalObjectDesignator myEntityId[2];
169  DtNetU32 myObjectId[2];
170  DtNetWorldCoordinates myPosition[2];
171  DtNetWorldCoordinates myOffset;
172  DtNetU32 myPattern;
173  DtNet32Vector myScale;
174  DtNet32Vector myRotation;
175  DtNetU32 myFree[2];
177 
178 typedef struct
179 {
180  DtNetU32 myId;
181  DtNetU32 myType;
182  DtNetU8 myFlags;
183  DtNetU8 myAttachements;
184  DtNetU8 myPercentage;
185  DtNetU8 myUnused;
186  DtNetU8 myColor[4];
187  DtNetGlobalObjectDesignator myEntityId[2];
188  DtNetU32 myObjectId[2];
189  DtNetWorldCoordinates myPosition[2];
190  DtNetWorldCoordinates myOffset;
191  DtNetU32 myPattern;
192  DtNet32Vector myScale;
193  DtNet32Vector myRotation;
194  DtNetU32 myThickness;
195  DtNetU32 myFree[2];
197 
198 typedef struct
199 {
200  DtNetU32 myId;
201  DtNetU32 myType;
202  DtNetU8 myFlags;
203  DtNetU8 myAttachements;
204  DtNetU8 myPercentage;
205  DtNetU8 myUnused;
206  DtNetU8 myColor[4];
207  DtNetGlobalObjectDesignator myEntityId[2];
208  DtNetU32 myObjectId[2];
209  DtNetWorldCoordinates myPosition[2];
210  DtNetWorldCoordinates myOffset;
211  DtNetU32 myPattern;
212  DtNetU32 myThickness;
213  DtNetU32 myFree[2];
214 } DtNetSdcLine;
215 
216 typedef struct
217 {
218  DtNetU32 myId;
219  DtNetU32 myType;
220  DtNetU8 myFlags;
221  DtNetU8 myAttachements;
222  DtNetU8 myPercentage;
223  DtNetU8 myUnused;
224  DtNetU8 myColor[4];
225  DtNetGlobalObjectDesignator myEntityId[2];
226  DtNetU32 myObjectId[2];
227  DtNetWorldCoordinates myPosition[2];
228  DtNetWorldCoordinates myOffset;
229  DtNetU32 myPattern;
230  DtNet32Vector myScale;
231  DtNet32Vector myRotation;
232  DtNetWorldCoordinates myPoints[3];
233  DtNetU32 myFree[2];
235 
236 
237 typedef struct
238 {
239  DtNetU32 myId;
240  DtNetU32 myType;
241  DtNetU8 myFlags;
242  DtNetU8 myAttachements;
243  DtNetU8 myPercentage;
244  DtNetU8 myUnused;
245  DtNetU8 myColor[4];
246  DtNetGlobalObjectDesignator myEntityId[2];
247  DtNetU32 myObjectId[2];
248  DtNetWorldCoordinates myPosition[2];
249  DtNetWorldCoordinates myOffset;
250  DtNetU32 myPattern;
251  DtNet32Vector myScale;
252  DtNet32Vector myRotation;
253  DtNetWorldCoordinates myPoints[16];
254  DtNetU32 myFree[2];
255 } DtNetSdcArea;
256 
257 typedef struct
258 {
259  DtNetU32 myId;
260  DtNetU32 myType;
261  DtNetU8 myFlags;
262  DtNetU8 myUnused[3];
263  DtNetU32 myGroupId;
264  DtNetFloat64 myXValue;
265  DtNetFloat64 myYValue;
266  DtNetU32 myNameSize;
267  DtNetU32 myFree[2];
269 
270 typedef struct
271 {
272  DtNetU32 myId;
273  DtNetU32 myType;
274  DtNetU8 myFlags;
275  DtNetU8 myAttachements;
276  DtNetU8 myPercentage;
277  DtNetU8 myUnused1;
278  DtNetU8 myColor[4];
279  DtNetGlobalObjectDesignator myEntityId[2];
280  DtNetU32 myObjectId[2];
281  DtNetWorldCoordinates myPosition[2];
282  DtNetWorldCoordinates myOffset;
283  DtNetU32 myNameSize;
285  DtNetFloat64 myMinRange;
286  DtNetFloat64 myMaxRange;
287  DtNetU32 myFree[2];
289 
290 typedef struct
291 {
292  DtNetU8 myColor[4];
293  DtNetU32 myPattern;
294  DtNetU32 myThickness;
295  DtNetU8 myFlags;
296  DtNetU8 myPercentage;
297  DtNetU8 myUnused[2];
299 
300 typedef struct
301 {
302  DtNetU32 myId;
303  DtNetU32 myType;
304  DtNetU8 myFlags;
305  DtNetU8 myAttachements;
306  DtNetU8 myPercentage;
307  DtNetU8 myUnused;
308  DtNetU8 myColor[4];
309  DtNetGlobalObjectDesignator myEntityId[2];
310  DtNetU32 myObjectId[2];
311  DtNetWorldCoordinates myPosition[2];
312  DtNetWorldCoordinates myOffset;
313  DtNetU32 myNumSegments;
314  DtNetU32 myFree[2];
316 
317 
318 //
319 // These are the NEW versions of the netstructs that are used by default in
320 // Stealth 6.0.1 and later. Note again that Stealth 6.0.1 and later can
321 // receive either type of packet, but older Stealth's only support the older
322 // version.
323 //
324 
325 //
326 // DtNetSdcDrawControlParams
327 //
328 // This is the replacement for DtNetSdcBasicParams. It contains the fields
329 // that are common to ALL the Draw Control PDUs. No PDU is actually sent
330 // with just this struct - but it is included in all other netstructs.
331 //
332 
333 typedef struct
334 {
335  DtNetU32 myMagicCookie; // This contains a bit pattern, 0x600DF00D,that
336  // tells us this is a versioned parameter. If
337  // the net parameter block does not start with
338  // this pattern, the OLD netstructs are used.
339  DtNetU16 myParamVersion;
340  DtNetU8 myFlags;
341  DtNetU8 myPadding8_1;
342 
343  DtNetU32 myId;
344  DtNetU32 myType;
345 } DtNetSdcDrawControlParams; // 16 bytes
346 
347 
348 //
349 // DtNetSdcLayerParams
350 //
351 // This is the replacement for DtSdcNamedObject (no, NOT for DtSdcLayer).
352 // It is the network representation of the DtSdcLayerPDU's parameters.
353 //
354 
355 typedef struct
356 {
359  // Note that this is followed by a byte-array of characters which are the
360  // layer name.
361 } DtNetSdcLayerParams; // variable length (minimum 20 bytes)
362 
363 //
364 // DtNetSdcCommandParams
365 //
366 // This is the replacement for DtNetSdcLayer(!). It is the network
367 // representation of the DtSdcCommandPDU's parameters. The parameters
368 // of the command pdu only include a layer id, which is only used for
369 // the AddToLayer and RemoveFromLayer commands. The id of the object to
370 // operate on is specified in the drawControlParams' id field, and the
371 // the type of command is specified in the drawControlParams' type
372 // field.
373 
374 typedef struct
375 {
377  DtNetU32 myLayerId;
378 } DtNetSdcCommandParams; // 20 bytes
379 
380 //
381 // DtNetSdcAttributeUpdateParams
382 //
383 // This is the replacement for DtNetSdcAttributeUpdateValue. It is the network
384 // representation of a DtSdcAttributeUpdatePDU's parameters.
385 
386 typedef struct
387 {
389  DtNetFloat64 myXValue;
390  DtNetFloat64 myYValue;
391  DtNetU32 myGroupId;
392  DtNetU32 myTextLength;
393  // Note that this may be followed by a byte-array of characters which
394  // represents updated text.
395 } DtNetSdcAttributeUpdateParams; // 40 bytes
396 
397 //
398 // DtNetSdcAttachableParams
399 //
400 // This is the replacement for DtNetSdcPosObject. It is the network
401 // representation of a DtSdcAttachablePDU's parameters. This PDU type is never
402 // sent on its own. It is a base type shared by Attribute, Text, and
403 // Graphical Object PDUs.
404 //
405 // The myAttachments field is a DtVcObjectAttachment enumeration that specifies
406 // how the object placed in the scene (2D point, 2 2D points, attached to an
407 // entity, etc.).
408 //
409 
410 typedef struct
411 {
413  DtNetU8 myAttachments; // A DtVcObjectAttachment
414  DtNetU8 myPadding8_1; // specifies a relative location
415  // Used for attachment to lines
416  // and cylinders
417  DtNetU8 myPercentage[2];// specifies a relative location
418  // Used for attachment to lines
419  // and cylinders
420  DtNetU8 myColor[4]; // rgba
421  DtNetGlobalObjectDesignator myEntityId[2]; // 64 bytes each in HLA; 6 bytes
422  // each in DIS. Second is used
423  // to attach lines / cylinders
424  // between 2 objects
425  DtNetU32 myObjectId[2]; // id(s) of other draw control
426  // objects (created by the same
427  // sender)
428 #if DtDIS
429  DtNetU32 myPadding32_1; // For DIS, put world coords
430 #endif // on 8-byte boundary
431 
432  DtNetWorldCoordinates myPosition[2]; // Position (and optional
433  // endpoint) for attaching to
434  // world coordinates
435  DtNetWorldCoordinates myOffset; // a 3D offset
436 } DtNetSdcAttachableParams; // 232 bytes in HLA; 120 bytes in DIS
437 
438 //
439 // DtNetSdcTextParams
440 //
441 // This is the replacement for DtNetSdcPosNamedObject. It is the network
442 // representation of a DtSdcTextPDU's parameters.
443 //
444 
445 typedef struct
446 {
448  DtNetU32 myTextLength;
449  // Note that this will be followed by a byte-array of characters which
450  // represents the text to display.
451 } DtNetSdcTextParams; // variable length; minimum 236 bytes in HLA,
452 // 124 bytes in DIS
453 
454 //
455 // DtNetSdcAttributeParams
456 //
457 // This is the replacement for DtNetSdcAttribute. It is the network
458 // representation of a DtSdcAttributePDU's parameters.
459 //
460 // Text can be the name of an attribute group or attribute group
461 // template.
462 //
463 
464 typedef struct
465 {
467  DtNetFloat64 myMinRange;
468  DtNetFloat64 myMaxRange;
470  DtNetU32 myNameLength;
471  // Note that this may be followed by a byte-array of characters which
472  // represents the name of an attribute or attribute group template.
473 } DtNetSdcAttributeParams; // variable length; minimum 256 bytes in HLA,
474 // 144 bytes in DIS
475 
476 //
477 // DtNetSdcLineParams
478 //
479 // This is the replacement for DtNetSdcLine and DtNetSdcSegmentedLine.
480 // It is the network representation of a DtSdcLinePDU's parameters.
481 // An SdcLine is just a SdcSegmentedLine with one segment, simplifying
482 // the network structures and class hierarchy, which previously treated
483 // lines and segmented lines seperately.
484 
485 typedef struct
486 {
488  DtNetU32 myNumSegments;
489  DtNetU8 myCheckLos;
490  DtNetU8 myProjected;
491  DtNetU16 myPadding16_1;
492  // This is followed by myNumSegments DtNetSdcLineSegments (define below)
493 } DtNetSdcLineParams; // variable length; minimum 240 bytes HLA, 128 bytes
494 // in DIS + segments
495 
496 //
497 // DtNetSdcLineSegment
498 //
499 // This is the replacement for DtNetSdcSegment. It is the network
500 // representation of one segment of a (possibly segmented) line.
501 
502 typedef struct
503 {
504  DtNetU8 myColor[4];
505  DtNetU32 myPattern;
506  DtNetU32 myThickness;
507  DtNetU8 myFlags;
508  DtNetU8 myPercentage;
509  DtNetU16 myPadding16_1;
510 } DtNetSdcLineSegment; // 16 bytes
511 
512 
513 //
514 // DtNetSdcPolyObjectParams
515 //
516 // This is the replacement for DtNetSdcGraphicObject. It is the network
517 // representation of a DtSdcPolyObjectPDU's parameters.
518 
519 typedef struct
520 {
522  DtNetU32 myPattern;
523  DtNet32Vector myScale;
524  DtNet32Vector myRotation;
525 } DtNetSdcPolyObjectParams; // 256 bytes in HLA; 148 bytes in DIS
526 
527 
528 //
529 // DtNetSdcTriangleParams
530 //
531 // This is the replacement for DtNetSdcTriangle. It is the network
532 // representation of a DtSdcTrianglePDU's parameters. It adds a
533 // field to represent the points of the triangle.
534 
535 typedef struct
536 {
538  DtNetU32 myPadding32_1;
539  DtNetWorldCoordinates myPoints[3];
540 
541 } DtNetSdcTriangleParams; // 230 bytes in HLA; 192 bytes in DIS
542 
543 
544 // We are imposing a 16-vertex limit on
545 // this object so that it doesn't become too large
546 
547 #define DT_MAX_SDC_AREA_VERTS 16
548 
549 typedef struct
550 {
552  DtNetWorldCoordinates myPoints[DT_MAX_SDC_AREA_VERTS];
553  char myTextureFilename[256];
554  char myTextureDirectory[256];
555  DtNetU8 myNumVerts;
557  DtNetU8 myProjected;
558  char padding1;
559 
560 } DtNetSdcAreaParams; // 1156 bytes in HLA; 1048 bytes in DIS
561 
562 /* ---------------------- View Control ------------------- */
563 #ifndef _VIEWCONTROLP_H_GATEWAY_PROTECTION
564 #define _VIEWCONTROLP_H_GATEWAY_PROTECTION
565 
566 #define DtNetViewerCommand DtNetU16
567 
568 typedef struct
569 {
570  DtNetU32 ignoreFlags;
571  DtNetU32 padding;
572  DtNetWorldCoordinates world;
573  DtNetEulerAngles orientation;
576 
577 typedef struct
578 {
579  DtNetU32 ignoreFlags;
580  DtNetTopoUpCoord offset;
581  DtNetEulerAngles orientation;
582  DtNetGlobalObjectDesignator attachId;
583  char markingText[64];
586 
587 typedef struct
588 {
589  DtNetU32 ignoreFlags;
590  DtNetFloat32 radius;
591  DtNetFloat32 bodyHeading;
592  DtNetFloat32 pitch;
593  DtNetFloat32 headingOffset;
594  DtNetFloat32 pitchOffset;
595  DtNetFloat32 roll;
596  DtNetGlobalObjectDesignator attachId;
597  char markingText[64];
600 
601 typedef struct
602 {
603  DtNetU32 ignoreFlags;
604  DtNetEntityCoordinates offset;
605  DtNetEulerAngles bodyOrientation;
606  DtNetGlobalObjectDesignator attachId;
607  char markingText[64];
610 
611 typedef struct
612 {
613  DtNetU32 ignoreFlags;
614  DtNetFloat32 radius;
615  DtNetFloat32 azimuthRate;
616  DtNetFloat32 heading;
617  DtNetFloat32 pitch;
618  DtNetFloat32 headingOffset;
619  DtNetFloat32 pitchOffset;
620  DtNetFloat32 roll;
621  DtNetGlobalObjectDesignator attachId;
622  char markingText[64];
625 
626 typedef struct
627 {
628  DtNetU32 ignoreFlags;
629  DtNetU32 padding;
630  DtNetWorldCoordinates world;
631  DtNetGlobalObjectDesignator trackId;
632  char markingText[64];
635 
636 typedef struct
637 {
638  DtNetU32 ignoreFlags;
639  DtNetEntityCoordinates offset;
640  DtNetGlobalObjectDesignator attachId;
641  DtNetGlobalObjectDesignator trackId;
642  char attachMarkingText[64];
643  char trackMarkingText[64];
646 
647 typedef struct
648 {
649  DtNetU32 ignoreFlags;
650  DtNetEntityCoordinates offset;
651  DtNetGlobalObjectDesignator attachId;
652  DtNetGlobalObjectDesignator trackId;
653  char attachMarkingText[64];
654  char trackMarkingText[64];
657 
658 #define MAX_EIG_ENTITIES 100
659 
660 typedef struct DtNetEntitiesInGroup
661 {
662  DtNetInt32 numToRemove; /* -1 means remove all */
663  DtNetInt32 numToAdd;
664  DtNetGlobalObjectDesignator groupId[MAX_EIG_ENTITIES];
667 
668 #define DtCMD_GROUP (0)
669 #define DtCMD_WIDE_GROUP (1)
670 
671 typedef struct
672 {
673  DtNetU32 ignoreFlags;
674  DtNetFloat32 radialOffset;
675  DtNetFloat32 heading;
676  DtNetFloat32 pitch;
677  DtNetFloat32 headingOffset;
678  DtNetFloat32 pitchOffset;
679  DtNetU32 groupCmd;
683 
684 typedef struct
685 {
686  DtNetU32 ignoreFlags;
687  DtNetGlobalObjectDesignator primaryId;
688  DtNetGlobalObjectDesignator secondaryId;
692 
693 typedef struct
694 {
695  DtNetU8 optionsBitField[8];
696  DtNetFloat64 locatorRange;
697  DtNetFloat64 smoothingPeriod;
698  DtNetFloat64 clampRange;
699  DtNetFloat64 floor;
700  DtNetFloat64 timeOfDay;
701  DtNetFloat64 nearClip;
702  DtNetFloat64 farClip;
703  DtNetFloat64 fov;
704  DtNetFloat64 nearFog;
705  DtNetFloat64 farFog;
706 
707  DtNetU32 overlayOption;
708  DtNetU32 smoothing;
709  DtNetU32 aggregateLevel;
710  DtNetBoolean nextmodelset;
711  DtNetBoolean prevmodelset;
712  DtNetBoolean xr;
713  DtNetBoolean hatlabels;
714 
715  DtNetBoolean sound;
716  DtNetBoolean entityLabels;
717  DtNetBoolean trailingEffects;
718  DtNetBoolean trajectoryHistory;
719 
720  DtNetBoolean recording;
721  DtNetBoolean aggregateHighestOnly;
723  DtNetBoolean nestedAggregates;
724 
725  DtNetBoolean nestedEntities;
726  DtNetBoolean groundClamping;
727  DtNetBoolean followGround;
728  DtNetBoolean constrainWithFloor;
729 
730  DtNetBoolean fog;
731  DtNetBoolean texture;
732  DtNetBoolean nexttextureset;
733  DtNetBoolean prevtextureset;
734 
735  char databaseToLoad[256];
736  char date[64];
737  DtNetFloat32 turnrate;
738  DtNetFloat32 stepsize;
739  char modelsetname[32];
740  char texturesetname[32];
741  DtNetFloat32 terrainscale;
742  DtNetFloat32 objectscale;
743  DtNetBoolean skydome;
744  DtNetBoolean clouds;
745 
746  // Mirroring stuff here
747  DtNetBoolean mirroring;
749  // 4-byte boundary
750  DtNetBoolean broadcasting;
751  DtNetBoolean clusteringLabels;
753  DtNetBoolean tacticalGraphics;
754 
755  DtNetBoolean showAggregates;
756  DtNetBoolean showEmitters;
757 
758  // Video capture stuff here
759  DtNetU8 videoCaptureCommand; // record, pause, unpause, or stop
761 
763  DtNetU16 padding_1;
764 
765  char videoCaptureFilename[256];
766  char videoCaptureDirectory[256];
767  char videoCaptureFilenameBase[64];
768 
769  DtNetFloat64 blockedDistance;
770  DtNetBoolean constrainedToAll;
772  // lets add another 64 option flags - that should hold us a little longer
773  DtNetU8 optionsBitField2[8];
774 
775  // and some more data
776  char featureFilename[256];
777  DtNetU8 featureCommand; // load or clear
778 
780 
782 
783 #ifdef DT_CANT_HAVE_NET_UNIONS
784 // NOTE:
785 // Since we cant get a union of all the types we need to
786 // make DtNetViewControlParams the size of the largest
787 // component in the DtNetViewControlParams union below.
788 // If you dont do this the PDU/Interactions will be to big
789 #if DtHLA
790 // In HLA DtNetModelessParams = 6540 bytes
791 // In DIS = 635
793 #else
794 // In HLA DtNetGroupParams = 6436
795 // in DIS = 635
797 #endif
799 
800 typedef DtNetAbsoluteParams DtNetabsoluteParams;
801 typedef DtNetTetherParams DtNettetherParams;
802 typedef DtNetCompassParams DtNetcompassParams;
803 typedef DtNetMimicParams DtNetmimicParams;
804 typedef DtNetOrbitParams DtNetorbitParams;
805 typedef DtNetTrackParams DtNettrackParams;
806 typedef DtNetTetherTrackParams DtNettetherTrackParams;
807 typedef DtNetMimicTrackParams DtNetmimicTrackParams;
808 typedef DtNetGroupParams DtNetgroupParams;
809 typedef DtNetModelessParams DtNetmodelessParams;
810 typedef DtNetOptionsParams DtNetoptionsParams;
811 
812 #define DtVCPDU_PARAMS(pdu, type) (*((DtNet##type##Params *) &pdu->params))
813 #define DtVIEW_PARAMS(params, type) (*((DtNet##type##Params *) &params))
814 
815 #else
816 
817 #define DtVCPDU_PARAMS(pdu, type) (pdu->params.type)
818 #define DtVIEW_PARAMS(params, type) (params.type)
819 
820 typedef union
821 {
835 
836 #endif
837 #endif /*GATEWAY_PROTECTION */
838 
839 typedef struct DtNetViewControlPdu
840 {
841  DtNetPduHeader header;
842  DtNetGlobalObjectDesignator viewerId; /* The ID of the stealth */
843  DtNetGlobalObjectDesignator senderId;
844 #if DtHLA
845  DtNetU32 pad;
846 #endif
847  DtNetU16 unused0;
848  DtNetViewerCommand command; /* attach, teleport, etc. */
849  DtNetU32 unused;
852 
853 // \brief DtSdcVector2Ds represent vectors in 2-d space, X, Y
854 //
855 // A DtSdcVector2D is the 2D equivalent of the 3D DtSdcVector2D
857 {
858 public:
859 
860  DtSdcVector2D();
861 
862  // Construct from two doubles.
863  DtSdcVector2D( const double& x, const double& y );
864 
865  // destructor
866  ~DtSdcVector2D();
867 
868  // copy constructor
869  DtSdcVector2D(const DtSdcVector2D& vec);
870 
871  // assignment operator
872  DtSdcVector2D& operator=(const DtSdcVector2D& vec);
873 
874  // set Vector to all zeros
875  void setToZero();
876 
877  // @{
878  // gets/sets the x component of a Vector
879  const double& x() const;
880  void setX(const double& x);
881  // @}
882 
883  // @{
884  // gets/sets the y component of a Vector
885  const double& y() const;
886  void setY(const double& y);
887  // @}
888 
889  // adds other to this vector
890  DtSdcVector2D &operator+=(const DtSdcVector2D &other);
891 
892  // subtracts other from this vector (this - other)
893  DtSdcVector2D &operator-=(const DtSdcVector2D &other);
894 
895  // subtraction
896  DtSdcVector2D operator-(const DtSdcVector2D &other) const;
897 
898  // addition
899  DtSdcVector2D operator+(const DtSdcVector2D &other) const;
900 
901  // multiplies this vector by scalar
902  DtSdcVector2D operator*(float scale) const;
903 
904  // multiplies this vector by scalar
905  DtSdcVector2D& operator*=(float scale);
906 
907  // Get the value for the specified subscript. (int version)
908  double& operator[](int ind);
909 
910  // A const version to get the value for the specified subscript
911  double operator[](int ind) const;
912 
913  // Get the value for the specified subscript. (enum version)
914  double& operator[](DtSdcVector2DOffset ind);
915 
916  // a const version to get the value for the specified subscript. (enum version)
917  double operator[](DtSdcVector2DOffset ind) const;
918 
919  // Get whether another vector equals this vector. Warning: This
920  // operation compares floats of exact equality.
921  int operator==(const DtSdcVector2D& vec) const;
922 
923  // Get whether another vector does not equal this vector. Warning:
924  // this operation calles operator== which tests floats for exact equality
925  int operator!=(const DtSdcVector2D& vec) const;
926 
927  // Get a string representation of the vector.
928  DtString string() const;
929 
930  // Create a DtVector (with z==0) from a DtSdcVector2D
931  DtVector vector3D() const;
932 
933  // Get the magnitude of the vector squared,
934  // i.e. x^2 + y^2
935  double magnitudeSquared() const;
936 
937  // Normalize the vector; i.e., magnitude = 1.
938  void normalize();
939 
940  // Returns true of the vector is Normalized
941  bool isNormalized() const;
942 
943  // Compute dot product with another vector
944  double dotProduct(const DtSdcVector2D& v) const;
945 
946  // check if the vector is zero-ed out withing the tolerace passed
947  bool approxEq(const DtSdcVector2D& v, const double& tolerance) const;
948 
949  // check if the magnitide of this vector is zero
950  bool magnitudeIsZero() const;
951 
952  // check if the magnitide of this vector is zero, within the tolerance passed.
953  // \Note This tolerance is comparied against each component of the vector,
954  // not the magnitude.
955  bool magnitudeIsZero(double tolerance) const;
956 
957  // prints out a formated string to the stream
958  std::ostream &printDataToStream(std::ostream &str) const;
959 
960 public:
961 
962  // @name These functions reveal the internal representation of DtVector
963  // and should not be used. They are provided for backwards compatability
964  // @{
965  operator double* ();
966  operator const double* () const;
967  // @}
968 
969 public:
970 
971 
972  // Get a zero'ed vector.
973  static const DtSdcVector2D& zero();
974 
975  // Get a (1,0) vector.
976  static const DtSdcVector2D& i();
977 
978  // Get a (0,1) vector.
979  static const DtSdcVector2D& j();
980 
981  // Get a vector set to all ones.
982  static const DtSdcVector2D& ones();
983 
984 
985 protected:
986 
987  double myRep[2];
988 
989 
990 };
991 
994 
995 
996 const DtViewerCommand DtViewerPivot = DtViewerCommand(12);
997 const DtViewerCommand DtViewerMove = DtViewerCommand(13);
998 const DtViewerCommand DtViewerRequestState = DtViewerCommand(14);
999 const DtViewerCommand DtViewerOrthoPivot = DtViewerCommand(15);
1000 
1001 #define DtStealthViewModeStatusStart 500
1002 #define DtStealthViewModeStatusEnd 600
1003 
1004 #define DtNewViewModeStatusCommand(Mode) \
1005  const DtViewerCommand DtViewerStatus##Mode = (DtViewerCommand) \
1006  ((int) DtStealthViewModeStatusStart + DtViewer##Mode);
1007 
1008 DtNewViewModeStatusCommand(Absolute);
1015 DtNewViewModeStatusCommand(TetherTrack);
1016 DtNewViewModeStatusCommand(MimicTrack);
1018 DtNewViewModeStatusCommand(Modeless);
1020 DtNewViewModeStatusCommand(OrthoPivot);
1021 
1022 #define DtStealthRemoteDrawControlStart 2500
1023 #define DtStealthRemoteDrawControlEnd 2600
1024 
1025 #define DtNewViewerCommand(newType, value) \
1026  const DtViewerCommand newType = (DtViewerCommand) \
1027  ((int)DtStealthRemoteDrawControlStart + value);
1028 
1029 #define EVCSTR(id) #id
1030 #define CASE_EVCSTRING(af) case af: return (EVCSTR(af) + 2)
1031 
1038 
1040 
1041 DtNewViewerCommand(DtSdcUndefined, -DtViewerOptions)
1042 
1043 DtNewViewerCommand(DtSdcObjectPdu, 0)
1044 
1045 // DtSdcCommand is for internal use only; it indicates the
1046 // view command used to convey the actual draw commands below.
1047 // The draw command itself is put into the view control PDU's
1048 // params.type field
1049 DtNewViewerCommand(DtSdcCommand, 10)
1050 
1051 // Use these to send draw commands
1052 DtNewViewerCommand(DtSdcCommandRemove, 11)
1053 DtNewViewerCommand(DtSdcCommandHide, 12)
1054 DtNewViewerCommand(DtSdcCommandShow, 13)
1055 DtNewViewerCommand(DtSdcCommandAddToLayer, 14)
1056 DtNewViewerCommand(DtSdcCommandRemoveFromLayer, 15)
1057 DtNewViewerCommand(DtSdcCommandShowAttribute, 16)
1058 DtNewViewerCommand(DtSdcCommandShowTemplateAttribute, 17)
1059 DtNewViewerCommand(DtSdcCommandHideAttribute, 18)
1060 DtNewViewerCommand(DtSdcCommandHideTemplateAttribute, 19)
1061 
1063 // DtSdcLine is for internal use only; it indicates the
1064 // view command used to convey the actual line commands below.
1065 // The draw command itself is put into the view control PDU's
1066 // params.type field
1067 DtNewViewerCommand(DtSdcLine, 20)
1068 
1069 // Use these commands for 2D and 3D lines
1070 DtNewViewerCommand(DtSdc2DLine, 21)
1071 DtNewViewerCommand(DtSdc3DLine, 22)
1072 
1073 // DtSdcSegmentedLine is for internal use and backwards compatibilty only;
1074 // it indicates the view command used to convey the actual segmented line
1075 // commands below in version 0 (in the current version, there is no segmented
1076 // line command - just use the line command, which can have 1 or more segments.
1077 // The draw command itself is put into the view control PDU's
1078 // params.type field
1079 DtNewViewerCommand(DtSdcSegmentedLine, 30)
1080 DtNewViewerCommand(DtSdc2DSegmentedLine, 31)
1081 DtNewViewerCommand(DtSdc3DSegmentedLine, 32)
1082 
1083 // DtSdcPolyObject is for internal use only; it indicates the
1084 // view command used to convey the actual poly object commands below.
1085 // The draw command itself is put into the view control PDU's
1086 // params.type field
1087 DtNewViewerCommand(DtSdcPolyObject, 40)
1088 
1089 // Use these commands for poly objects
1090 DtNewViewerCommand(DtSdcCircle, 41)
1091 DtNewViewerCommand(DtSdcSphere, 42)
1092 DtNewViewerCommand(DtSdcSquare, 43)
1093 DtNewViewerCommand(DtSdcCube, 44)
1094 DtNewViewerCommand(DtSdcCylinder, 45)
1095 
1096 // DtSdcTriangle is for internal use only; it indicates the
1097 // view command used to convey the actual triangle object commands below.
1098 // The draw command itself is put into the view control PDU's
1099 // params.type field
1100 DtNewViewerCommand(DtSdcTriangle, 50)
1101 
1102 // Use these commands for triangles
1103 DtNewViewerCommand(DtSdc2DTriangle, 51)
1104 DtNewViewerCommand(DtSdc3DTriangle, 52)
1105 
1106 // Areas
1107 DtNewViewerCommand(DtSdcArea, 53)
1108 DtNewViewerCommand(DtSdc2DArea, 54)
1109 DtNewViewerCommand(DtSdc3DArea, 55)
1110 
1112 // DtSdcText is for internal use only; it indicates the
1113 // view command used to convey the actual text commands below.
1114 // The draw command itself is put into the view control PDU's
1115 // params.type field
1116 DtNewViewerCommand(DtSdcText, 60)
1117 
1118 // Use these commmands for text
1119 DtNewViewerCommand(DtSdc2DText, 61)
1120 DtNewViewerCommand(DtSdc3DText, 62)
1121 
1123 // DtSdcAttribute is for internal use only; it indicates the
1124 // view command used to convey the actual attribute commands below.
1125 // The draw command itself is put into the view control PDU's
1126 // params.type field
1127 DtNewViewerCommand(DtSdcAttribute, 70)
1128 
1129 // Use these commands for creating attribute groups and attirbute group templates
1130 DtNewViewerCommand(DtSdcAttributeGroupTemplate, 71)
1131 DtNewViewerCommand(DtSdcAttributeGroup, 72)
1132 DtNewViewerCommand(DtSdcAttributeNoValue, 73)
1133 DtNewViewerCommand(DtSdcAttributeSingleValue, 74)
1134 DtNewViewerCommand(DtSdcAttributeGraphicSingleValue, 75)
1135 DtNewViewerCommand(DtSdcAttributeGraphicListValue, 76)
1136 DtNewViewerCommand(DtSdcAttributeBitmap, 77)
1137 
1138 // DtSdcAttributeUpdate is for internal use only; it indicates the
1139 // view command used to convey the actual attribute update commands below.
1140 // The draw command itself is put into the view control PDU's
1141 // params.type field
1142 DtNewViewerCommand(DtSdcAttributeUpdate, 80)
1143 
1144 // Use these commands for updating attribute values
1145 DtNewViewerCommand(DtSdcAttributeValueSet, 81)
1146 DtNewViewerCommand(DtSdcAttributeValueReset, 82)
1147 DtNewViewerCommand(DtSdcAttributeValueSetText, 83)
1148 
1150 // DtSdcLayer indicates the view command used and the (create)
1151 // layer command itself.
1152 // The command is also put into the view control PDU's
1153 // params.type field
1154 DtNewViewerCommand(DtSdcLayer, 90)
1155 
1158 #ifndef DtViewControlPdu
1159 typedef DtStealthControlPdu DtViewControlPdu;
1160 #if DtDIS
1161 typedef DtStealthControlPdu DtViewControlInteraction;
1162 #endif
1163 #endif
1164 
1165 #if DtDIS
1166 class DtExerciseConn;
1167 class DtStealthControlPdu;
1168 typedef DtStealthControlPdu DtStealthControlInteraction;
1170 (DtStealthControlInteraction *inter, void *usr);
1171 #include <vl/interaction.h>
1172 #endif
1173 
1174 #define netViewControlPdu ((DtNetViewControlPdu *) netPdu)
1175 #define DtViewControlStaticSize \
1176  sizeof(DtNetViewControlPdu) - sizeof(DtNetViewControlParams)
1177 
1178 #if DtHLA
1179 class DL_DLL_IGCONVRLINK DtStealthControlPdu : public DtPdu
1180 #else
1181 class DL_DLL_IGCONVRLINK DtStealthControlPdu : public DtInteraction
1182 #endif
1183 {
1184 public:
1185 
1186  // This form is used by the enclosing interaction's Copy Constructor,
1187  // assignment operator, and by setVcPdu (which makes a copy of the pdu.
1188  static DtPdu *create(const DtNetPacket *initial,
1189  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
1190 
1191  // This create is used to create a pdu from a net packet. It's slightly
1192  // different, in that it creates a current version PDU even when an
1193  // older version packet is received (the current always knows how to
1194  // handle any version packet). In this way, receivers can use a
1195  // single PDU interface regardless of the version PDU actually sent
1196  // (it always looks like the current version to the receiver
1197  static DtPdu *createFromNet( const DtNetPacket *initial,
1198  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
1199 
1200  static DtU32 drawControlParamVersion( const DtNetViewControlPdu* vc );
1201 
1202 #if DtDIS
1203 
1204  static void addCallback(DtExerciseConn *conn,
1205  DtStealthControlInteractionCb cb, void *usr);
1206  static void removeCallback(DtExerciseConn *conn,
1207  DtStealthControlInteractionCb cb, void *usr);
1208 
1209 #endif
1210 
1211  /****************** INSPECTOR FUNCTIONS *******************/
1212 
1213  const DtGlobalObjectDesignator& viewerId() const;
1214  const DtGlobalObjectDesignator& senderId() const;
1215  DtViewerCommand viewerCommand() const;
1216  unsigned long ignoreFlags() const;
1217  bool statusCommand() const;
1218 
1219  /****************** MUTATOR FUNCTIONS *******************/
1220 
1221  void setViewerId(const DtGlobalObjectDesignator& id);
1222  void setSenderId(const DtGlobalObjectDesignator& id);
1223  void setIgnoreFlags(unsigned long flags);
1224  void setStatusCommand(bool b);
1225 
1226  virtual void setFromString(const char *) {}
1227  virtual const char *string() const {return "";}
1228 
1229  void printData() const;
1230 
1231 protected:
1232  bool isNumber(const char* str);
1233  DtPduKind internalGetPduKind() const {return DtViewControlPduKind;}
1234  DtGlobalObjectDesignator retId;
1235  void setViewerCommand(DtViewerCommand com);
1237 
1238 protected:
1239  static DtStealthControlPdu* createViewControl(
1240  DtNetViewControlPdu *vc, DtBufferPtr buffer, DtPduFactory*);
1241 
1242  static DtStealthControlPdu* createDrawControl(DtNetViewControlPdu *vc,
1243  DtBufferPtr buffer, DtPduFactory*);
1244 
1245  static DtStealthControlPdu* createDrawControlV0(DtNetViewControlPdu *vc,
1246  DtBufferPtr buffer, DtPduFactory*);
1247  static DtStealthControlPdu* createDrawControlCurrent(DtNetViewControlPdu *vc,
1248  DtBufferPtr buffer, DtPduFactory*);
1249 
1250 protected:
1251  char vcStr[400];
1252 };
1253 
1254 DL_DLL_IGCONVRLINK DtStealthControlPdu *DtNewStealthControlPdu(DtViewerCommand command);
1255 DL_DLL_IGCONVRLINK DtStealthControlPdu *DtNewViewControlPdu(DtViewerCommand command);
1256 DL_DLL_IGCONVRLINK DtStealthControlPdu *DtNewDrawControlPdu(DtViewerCommand command);
1257 DL_DLL_IGCONVRLINK DtStealthControlPdu *DtNewDrawControlPduV0(DtViewerCommand command);
1258 
1259 #define DtIGNORE_EAST (1<<0)
1260 #define DtIGNORE_NORTH (1<<1)
1261 #define DtIGNORE_HEIGHT (1<<2)
1262 #define DtIGNORE_HEADING (1<<3)
1263 #define DtIGNORE_PITCH (1<<4)
1264 #define DtIGNORE_ROLL (1<<5)
1265 #define DtIGNORE_EAST_OFFSET (1<<6)
1266 #define DtIGNORE_NORTH_OFFSET (1<<7)
1267 #define DtIGNORE_HEIGHT_OFFSET (1<<8)
1268 #define DtIGNORE_RADIUS (1<<9)
1269 #define DtIGNORE_BODY_HEADING (1<<10)
1270 #define DtIGNORE_HEADING_OFFSET (1<<11)
1271 #define DtIGNORE_PITCH_OFFSET (1<<12)
1272 #define DtIGNORE_FORWARD (1<<13)
1273 #define DtIGNORE_RIGHT (1<<14)
1274 #define DtIGNORE_UP (1<<15)
1275 #define DtIGNORE_BODY_PITCH (1<<16)
1276 #define DtIGNORE_BODY_ROLL (1<<17)
1277 #define DtIGNORE_AZIMUTH_RATE (1<<18)
1278 #define DtIGNORE_RADIAL_OFFSET (1<<19)
1279 #define DtIGNORE_PRIMARY_ID (1<<20)
1280 #define DtIGNORE_SECONDARY_ID (1<<21)
1281 #define DtIGNORE_GROUP_IDS (1<<22)
1282 #define DtIGNORE_TURN_CMD (1<<23)
1283 #define DtIGNORE_STEP_CMD (1<<24)
1284 
1285 class DtExerciseConn;
1286 DL_DLL_IGCONVRLINK void DtStealthControlRegister(DtExerciseConn*);
1287 
1288 #define STEALTH_CONTROL_VERSION_STRING "1.2"
1289 #define STEALTH_CONTROL_MAJOR_VERSION 1
1290 #define STEALTH_CONTROL_MINOR_VERSION 2
1291 #define STEALTH_CONTROL_REVISION 0
1292 
1293 #include <vl/hostStructs.h>
1294 #if (VR_LINK_MINOR_VERSION == 9)
1295 #include <vlutil/vlMachineTypes.h>
1296 #endif
1297 #include <matrix/vlMath.h>
1298 #include <vl/globalObjectDesignator.h>
1299 
1300 #define netStealthDrawControlPdu ((DtNetViewControlPdu *) netPdu)
1301 #define DtStealthDrawControlStaticSize (sizeof(DtNetViewControlPdu) - sizeof(DtNetViewControlParams))
1302 
1303 //
1304 // Vector routines.
1305 //
1306 
1307 #define DtSetVec2D(v, x, y) v[DtSdcX]=x;v[DtSdcY]=y;
1308 
1309 DL_DLL_IGCONVRLINK void DtVecScale(const DtSdcVector2D& v, double scale_factor, DtSdcVector2D& result);
1310 DL_DLL_IGCONVRLINK void DtVecNeg(const DtSdcVector2D& v1, DtSdcVector2D& result); // result = -vec
1311 
1312 // cos of angle between v1 and V2
1314 
1316 DL_DLL_IGCONVRLINK void DtVecInit(DtSdcVector2D& v); // Initialize to all zeros.
1317 
1318 /* ||p1-p2||_{2} */
1319 DL_DLL_IGCONVRLINK double DtDistance(const DtSdcVector2D& p1, const DtSdcVector2D& p2);
1320 
1321 DL_DLL_IGCONVRLINK double DtDistSqr(const DtSdcVector2D& p1, const DtSdcVector2D& p2);
1322 
1323 
1324 std::ostream & operator << (std::ostream &str, const DtSdcVector2D &vec);
1325 
1327 {
1328  myRep[DtSdcX] = 0.0;
1329  myRep[DtSdcY] = 0.0;
1330 }
1331 
1332 inline const double& DtSdcVector2D::x() const
1333 {
1334  return myRep[DtSdcX];
1335 }
1336 
1337 inline void DtSdcVector2D::setX(const double& x)
1338 {
1339  myRep[DtSdcX] = x;
1340 }
1341 
1342 inline const double& DtSdcVector2D::y() const
1343 {
1344  return myRep[DtSdcY];
1345 }
1346 
1347 inline void DtSdcVector2D::setY(const double& y)
1348 {
1349  myRep[DtSdcY] = y;
1350 }
1351 
1352 // Inline DtSdcVector2D functions
1353 
1355 {
1356  return myRep[ind];
1357 }
1358 
1360 {
1361  return myRep[ind];
1362 }
1363 
1364 inline double& DtSdcVector2D::operator[](int ind)
1365 {
1366  return myRep[ind];
1367 }
1368 
1369 inline double DtSdcVector2D::operator[](int ind) const
1370 {
1371  return myRep[ind];
1372 }
1373 
1375  const double& x,
1376  const double& y)
1377 {
1378  myRep[DtSdcX] = x;
1379  myRep[DtSdcY] = y;
1380 }
1381 
1383 {
1384  myRep[DtSdcX] = 0;
1385  myRep[DtSdcY] = 0;
1386 }
1387 
1389 {
1390  myRep[DtSdcX] = other[DtSdcX];
1391  myRep[DtSdcY] = other[DtSdcY];
1392 }
1393 
1395 {
1396  if (&other != this)
1397  {
1398  myRep[DtSdcX] = other[DtSdcX];
1399  myRep[DtSdcY] = other[DtSdcY];
1400  }
1401  return *this;
1402 }
1403 
1405 {
1406 }
1407 
1408 //lint -save -e777
1409 inline int DtSdcVector2D::operator==(const DtSdcVector2D& vec) const
1410 {
1411  return
1412  (
1413  myRep[DtSdcX] == vec[DtSdcX] &&
1414  myRep[DtSdcY] == vec[DtSdcY]
1415  );
1416 }
1417 //lint -restore
1418 
1419 inline int DtSdcVector2D::operator!=(const DtSdcVector2D& vec) const
1420 {
1421  return !operator==(vec);
1422 }
1423 
1424 inline DtSdcVector2D::operator double* ()
1425 {
1426  return myRep;
1427 }
1428 
1429 inline DtSdcVector2D::operator const double* () const
1430 {
1431  return myRep;
1432 }
1433 
1434 
1442 {
1443 public:
1444 
1446  DtSdcColor();
1447 
1460  DtSdcColor( unsigned r, unsigned g, unsigned b, unsigned a = 255 );
1461 
1463  DtSdcColor( const DtSdcColor& orig );
1464 
1466  DtSdcColor operator=( const DtSdcColor& orig );
1467 
1475  const unsigned& operator[]( int index ) const;
1476 
1484  unsigned& operator[]( int index );
1485 
1486 
1488  bool operator==(const DtSdcColor& rhs) const;
1489 
1491  bool operator!=(const DtSdcColor& rhs) const;
1492 
1504  void setHSV( unsigned hue, double saturation, double value,
1505  unsigned alpha = 255 );
1506 
1512  unsigned red() const;
1513 
1519  void setRed( unsigned red );
1520 
1526  unsigned green() const;
1527 
1533  void setGreen( unsigned green );
1534 
1540  unsigned blue() const;
1541 
1547  void setBlue( unsigned blue );
1548 
1554  unsigned hue() const;
1555 
1561  void setHue( unsigned hue );
1562 
1568  double saturation() const;
1569 
1575  void setSaturation( double saturation );
1576 
1582  double value() const;
1583 
1589  void setValue( double value );
1590 
1596  unsigned alpha() const;
1597 
1603  void setAlpha( unsigned alpha );
1604 
1606  static const DtSdcColor DtSdcWhite;
1608  static const DtSdcColor DtSdcBlack;
1610  static const DtSdcColor DtSdcRed;
1612  static const DtSdcColor DtSdcGreen;
1614  static const DtSdcColor DtSdcBlue;
1616  static const DtSdcColor DtSdcYellow;
1618  static const DtSdcColor DtSdcPurple;
1620  static const DtSdcColor DtSdcOrange;
1621 
1622 protected:
1623  void toHSV();
1624  void fromHSV();
1625 
1626 protected:
1627  unsigned myRed;
1628  unsigned myGreen;
1629  unsigned myBlue;
1630  unsigned myAlpha;
1631 
1632  unsigned myHue;
1634  double myValue;
1635 };
1636 
1637 
1638 class DL_DLL_IGCONVRLINK DtStealthDrawControlPdu : public DtStealthControlPdu
1639 {
1640 public:
1641 
1642  virtual const DtNetU32 objectId() const;
1643  virtual void setObjectId(DtNetU32 lid);
1644 
1645  virtual void setType(DtNetU32 type);
1646  virtual DtNetU32 type() const;
1647 
1648  virtual DtU32 paramVersion() const;
1649 
1650  virtual void printData() const;
1651  static const char *typeString(int param);
1652 
1653 protected:
1654 
1655  virtual int setInternalText(DtString str, size_t structSize);
1656  virtual const DtString internalText(int size, size_t structSize) const;
1657 
1658  // This needs to be called after initPdu when creating Pdus to send.
1659  // All the existing top level draw control Pdus (that aren't constructed
1660  // from a net buffer) call this. It should never be called for a Pdu
1661  // created from a network buffer (as the version is there in the network
1662  // buffer already, and changing it to something else will probably result
1663  // in a fatal error).
1664  //
1665  virtual void setParamVersion( DtU32 paramVersion );
1666 
1667 protected:
1668 
1669  DtString myTemporalText;
1670 };
1671 
1672 class DtList;
1673 class DtExerciseConn;
1675 class DtGlobalObjectDesignatorList;
1677 
1678 class DtInetSocket;
1679 
1681  const DtStealthControlPdu& pdu, void* usr);
1682 
1683 
1684 #if DtHLA
1685 
1686 #include <vl/interactionWithEncDec.h>
1687 #include <vl/pdu.h>
1688 
1689 class DtStealthControlInteraction;
1690 class DtStealthControlPdu;
1691 class DtExerciseConn;
1692 
1694 typedef DtStealthControlInteraction DtViewControlInteraction;
1695 
1698 (DtStealthControlInteraction* inter, void* usr);
1699 
1704 
1705 class DL_DLL_IGCONVRLINK DtStealthControlInteraction : public DtInteractionWithEncDec
1706 {
1707 public:
1708 
1710  DtStealthControlInteraction();
1711 
1713  virtual ~DtStealthControlInteraction();
1714 
1716  DtStealthControlInteraction(const DtStealthControlInteraction& orig);
1717 
1719  DtStealthControlInteraction& operator=(const DtStealthControlInteraction& orig);
1720 
1722  virtual void printData() const;
1723 
1725  virtual const char* name() const;
1726 
1728  virtual const DtStealthControlPdu* vcPdu() const;
1729  virtual void setVcPdu(const DtStealthControlPdu& pdu);
1730  virtual void setFromNetPacket(const DtNetPacket* pack);
1731 
1732 
1733 public:
1734 
1737  static DtInteraction* create();
1738 
1741  static void addCallback(DtExerciseConn* conn,
1742  DtStealthControlInteractionCb cb, void* usr);
1743  static void removeCallback(DtExerciseConn* conn,
1744  DtStealthControlInteractionCb cb, void* usr);
1745 
1746 protected:
1747 
1748  virtual const char* interactionClassToUse(DtExerciseConn* exConn) const;
1749  virtual DtInteractionDecoder* createDecoder(DtExerciseConn* exConn) const;
1750  virtual DtInteractionEncoder* createEncoder(DtExerciseConn* exConn) const;
1751 
1752 protected:
1753 
1754  DtStealthControlPdu* myVcPdu;
1755 };
1756 
1757 inline const DtStealthControlPdu* DtStealthControlInteraction::vcPdu() const
1758 {
1759  return myVcPdu;
1760 }
1761 
1762 inline const char* DtStealthControlInteraction::name() const
1763 {
1764  return "DtStealthControlInteraction";
1765 }
1766 
1767 #endif
1768 
1769 
1771 {
1772 public:
1773 
1779  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1780 
1783  DtStealthRemoteController(DtExerciseConn* c,
1784  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1785 
1786 #if DtHLA
1787 
1789  DtStealthRemoteController(const char* execName, const char* federateType,
1790  DtFomMapper* mapper = DtRprFomMapper::create(NULL),
1791  const char* fedFileName = NULL,
1792  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1793 
1794  DtStealthRemoteController(const char* execName, const char* federateType,
1795  const char* dsoName, const char* fedFileName = NULL,
1796  void* fomMapInitData = NULL,
1797  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1798 
1799 #else
1800 
1802  DtStealthRemoteController(int port, int exercise_id,
1803  int site_id, int application_num,
1804  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1805 
1806  DtStealthRemoteController(int port, const DtInetAddr& destAddr,
1807  int exercise_id, int site_id, int application_num,
1808  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1809 
1810  DtStealthRemoteController(DtInetSocket *skt, int exercise_id,
1811  int site_id, int application_num,
1812  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL);
1813 
1814 
1815 #endif
1816 
1817  virtual ~DtStealthRemoteController();
1818 
1821  virtual void setTargetStealthId(const DtGlobalObjectDesignator& id);
1822  virtual const DtGlobalObjectDesignator& targetStealthId() const;
1823 
1825  virtual void setControllerId(const DtGlobalObjectDesignator& id);
1826  virtual const DtGlobalObjectDesignator& controllerId() const;
1827 
1831 
1833  virtual void reset() const;
1834 
1836  enum Direction { Left, Right, Up, Down, Forward, Backward };
1837  virtual void moveEyepoint(Direction d) const;
1838  virtual void turnEyepoint(Direction d) const;
1839 
1843  virtual void set(
1844  const DtVector* geoc = NULL,
1845  const DtTaitBryan* ori = NULL) const;
1846 
1855 
1856  virtual void setMode(DtViewerCommand m,
1857  const DtVector* geocPos = NULL,
1858  const DtTaitBryan* geocOri = NULL) const;
1859 
1866  virtual void setAbsoluteMode(
1867  const DtVector* geoc = NULL,
1868  const DtTaitBryan* ori = NULL) const;
1869 
1878  virtual void setCompassMode(
1879  const DtGlobalObjectDesignator* primary = NULL,
1880  const float* radius = NULL,
1881  const float* azimuth = NULL,
1882  const float* elevation = NULL) const;
1883 
1890  virtual void setMimicMode(
1891  const DtGlobalObjectDesignator* primary = NULL,
1892  const DtVector* offset = NULL) const;
1893 
1903  virtual void setOrbitMode(
1904  const DtGlobalObjectDesignator* primary = NULL,
1905  const float* radius = NULL,
1906  const float* azimuth = NULL,
1907  const float* elevation = NULL,
1908  const float* azimuthRate = NULL) const;
1909 
1917  virtual void setTetherMode(
1918  const DtGlobalObjectDesignator* primary = NULL,
1919  const DtVector* offset = NULL,
1920  const DtTaitBryan* ori = NULL) const;
1921 
1928  virtual void setTrackMode(
1929  const DtGlobalObjectDesignator* primary = NULL,
1930  const DtVector* geoc = NULL) const;
1931 
1939  virtual void setMimicTrackMode(
1940  const DtGlobalObjectDesignator* attach = NULL,
1941  const DtGlobalObjectDesignator* track = NULL,
1942  const DtVector* offset = NULL) const;
1943 
1951  virtual void setTetherTrackMode(
1952  const DtGlobalObjectDesignator* attach = NULL,
1953  const DtGlobalObjectDesignator* track = NULL,
1954  const DtVector* offset = NULL) const;
1955 
1956 public:
1957 
1959  virtual void send(const DtStealthControlPdu& pdu) const;
1960 
1961 public:
1962 
1964  static const DtGlobalObjectDesignator SEND_TO_ALL;
1965 
1966 protected:
1967 
1968  DtGlobalObjectDesignator myId;
1969  DtGlobalObjectDesignator myTargetId;
1970  DtExerciseConn* myExConn;
1973 };
1974 
1975 
1977 
1994 {
1995 public:
2000  DtSdcObject(DtExerciseConn* exConn, unsigned id, const DtString& objName);
2001 
2003  virtual ~DtSdcObject();
2004 
2005 private:
2010  DtSdcObject();
2011 
2014  DtSdcObject(const DtSdcObject& orig);
2015 
2018  DtSdcObject& operator=(const DtSdcObject& rhs);
2019 
2020 
2021 public:
2025  virtual unsigned id() const;
2026 
2033  virtual void setId( unsigned id );
2034 
2035  virtual const DtGlobalObjectDesignator& globalId() const;
2036 
2037  virtual void setVisible(bool yesNo);
2038 
2039  virtual bool visible() const;
2040 
2041  virtual bool flashing() const;
2042 
2043  virtual void setFlashing(bool yesNo);
2044 
2045  virtual const DtSdcColor& color() const;
2046 
2047  virtual void setColor(const DtSdcColor& color);
2048 
2049  virtual void setRemoteGraphicSet(const std::string& setName);
2050 
2055  virtual void update() = 0;
2056 
2057 protected:
2058  unsigned myId;
2059  DtEnvironmentProcessPublisher myPublisher;
2062 };
2063 
2064 class DL_DLL_IGCONVRLINK DtTetherTrackVCPdu : public DtStealthControlPdu
2065 {
2066 public:
2067 
2068  DtTetherTrackVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2069  DtTetherTrackVCPdu(const DtNetViewControlPdu *initial,
2070  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2071 
2072 
2073  DtConstVector offset() const;
2074  void setOffset(DtConstVector loc);
2075 
2076  const DtGlobalObjectDesignator& attachId() const;
2077  void setAttachId(const DtGlobalObjectDesignator& id);
2078 
2079  const DtGlobalObjectDesignator& trackId() const;
2080  void setTrackId(const DtGlobalObjectDesignator& id);
2081 
2082  const DtString& trackMarkingText() const;
2083  void setTrackMarkingText(const DtString& markingText);
2084 
2085  const DtString& attachMarkingText() const;
2086  void setAttachMarkingText(const DtString& markingText);
2087 
2088 
2089  void setFromString(const char *str);
2090  const char *string() const;
2091  void printData() const;
2092 
2093 protected:
2094  DtVector theVec;
2095  DtGlobalObjectDesignator theId;
2098 };
2099 
2100 class DL_DLL_IGCONVRLINK DtTetherVCPdu : public DtStealthControlPdu
2101 {
2102 public:
2103 
2104  /******************* STANDARD CONSTRUCTORS ****************/
2105 
2106  DtTetherVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2107  DtTetherVCPdu(const DtNetViewControlPdu *initial,
2108  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2109 
2110  /****************** INSPECTOR FUNCTIONS *******************/
2111 
2112  DtConstVector topoUpOffset() const;
2113  const DtTaitBryan &orientation() const;
2114  const DtGlobalObjectDesignator& attachId() const;
2115  const DtString& markingText() const;
2116 
2117  /****************** MUTATOR FUNCTIONS *******************/
2118 
2119  void setTopoUpOffset(DtConstVector offset);
2120  void setOrientation(const DtTaitBryan &ori);
2121  void setAttachId(const DtGlobalObjectDesignator& id);
2122  void setMarkingText(const DtString& markingText);
2123 
2124 
2125  void setFromString(const char *str);
2126  const char *string() const;
2127  void printData() const;
2128 
2129 protected:
2130  DtVector theVec;
2131  DtTaitBryan theAngles;
2132  DtGlobalObjectDesignator theId;
2133  DtString myMarkingText;
2134 
2135 };
2136 
2137 class DL_DLL_IGCONVRLINK DtTrackVCPdu : public DtStealthControlPdu
2138 {
2139 public:
2140 
2141 
2142  DtTrackVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2143  DtTrackVCPdu(const DtNetViewControlPdu *initial,
2144  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2145 
2146 
2147  DtConstVector worldLocation() const;
2148  const DtGlobalObjectDesignator& trackId() const;
2149 
2150  void setWorldLocation(DtConstVector loc);
2151  void setTrackId(const DtGlobalObjectDesignator& id);
2152 
2153  const DtString& markingText() const;
2154  void setMarkingText(const DtString& markingText);
2155 
2156 
2157  void setFromString(const char *str);
2158  const char *string() const;
2159  void printData() const;
2160 
2161 protected:
2162 
2163  DtVector theVec;
2164  DtGlobalObjectDesignator theId;
2165  DtString myMarkingText;
2166 
2167 };
2168 
2169 class DL_DLL_IGCONVRLINK DtUnknownStealthControlPdu : public DtStealthControlPdu
2170 {
2171 public:
2172 
2174  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0)
2175  {
2176  initPdu(initial, buffer, 0);
2177  }
2178 };
2179 
2180 class DL_DLL_IGCONVRLINK DtAbsoluteVCPdu : public DtStealthControlPdu
2181 {
2182  public:
2183 
2184 /******************* STANDARD CONSTRUCTORS ****************/
2185 
2186  DtAbsoluteVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2187 
2188  DtAbsoluteVCPdu(const DtNetViewControlPdu *initial,
2189  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2190 
2191 /****************** INSPECTOR FUNCTIONS *******************/
2192 
2193  DtConstVector worldLocation() const;
2194  const DtTaitBryan &orientation() const;
2195 
2196 /****************** MUTATOR FUNCTIONS *******************/
2197 
2198  void setWorldLocation(DtConstVector loc);
2199  void setOrientation(const DtTaitBryan &ori);
2200 
2201  void setFromString(const char *str);
2202  const char *string() const;
2203  void printData() const;
2204 
2205  protected:
2206  DtVector theVec;
2207  DtTaitBryan theAngles;
2208 };
2209 
2210 class DL_DLL_IGCONVRLINK DtCompassVCPdu : public DtStealthControlPdu
2211 {
2212  public:
2213 
2214 
2215  DtCompassVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2216  DtCompassVCPdu(const DtNetViewControlPdu *initial,
2217  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2218 
2219  float radius() const;
2220  void setRadius(float r);
2221 
2222  float bodyHeading() const;
2223  void setBodyHeading(float h);
2224 
2225  float pitch() const;
2226  void setPitch(float p);
2227 
2228  float headingOffset() const;
2229  void setHeadingOffset(float o);
2230 
2231  float pitchOffset() const;
2232  void setPitchOffset(float p);
2233 
2234  float roll() const;
2235  void setRoll(float r);
2236 
2237  const DtGlobalObjectDesignator& attachId() const;
2238  void setAttachId(const DtGlobalObjectDesignator& id);
2239 
2240  const DtString& markingText() const;
2241  void setMarkingText(const DtString& markingText);
2242 
2243  void setFromString(const char *str);
2244  const char *string() const;
2245  void printData() const;
2246 
2247  protected:
2248  DtGlobalObjectDesignator theId;
2249  DtString myMarkingText;
2250 };
2251 
2253 {
2254 public:
2257  virtual void send(const char* packet, int size) = 0;
2258 };
2259 
2260 class DL_DLL_IGCONVRLINK DtGroupVCPdu : public DtStealthControlPdu
2261 {
2262  public:
2263 
2264 /******************* STANDARD CONSTRUCTORS ****************/
2265 
2266  DtGroupVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2267  DtGroupVCPdu(const DtNetViewControlPdu *initial,
2268  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2269 
2270 /****************** INSPECTOR FUNCTIONS *******************/
2271 
2272  float radialOffset() const;
2273  float heading() const;
2274  float pitch() const;
2275  float headingOffset() const;
2276  float pitchOffset() const;
2277  int groupCmd() const;
2278  int numEntitiesToRemove() const;
2279  int numEntitiesToAdd() const;
2280  const DtGlobalObjectDesignator& entityToRemove(int n) const;
2281  const DtGlobalObjectDesignator& entityToAdd(int n) const;
2282 
2283 /****************** MUTATOR FUNCTIONS *******************/
2284 
2285  void setRadialOffset(float o);
2286  void setHeading(float h);
2287  void setPitch(float p);
2288  void setHeadingOffset(float o);
2289  void setPitchOffset(float o);
2290  void setGroupCmd(int c);
2291  void setNumEntitiesToRemove(int n);
2292  void setNumEntitiesToAdd(int n);
2293  void setEntityToRemove(int n, const DtGlobalObjectDesignator& id);
2294  void setEntityToAdd(int n, const DtGlobalObjectDesignator& id);
2295 
2296  void setFromString(const char *str);
2297  const char *string() const;
2298  void printData() const;
2299 
2300  protected:
2301  DtGlobalObjectDesignator theId;
2302 };
2303 
2304 #if DtHLA
2305 
2306 #include <vl/interactionDecoder.h>
2307 
2308 class DtStealthControlInteraction;
2311 
2314 
2315 #define DtDECLARE_VIEW_CONTROL_PARAM_DECODER(paramName) \
2316  DtDECLARE_PARAM_DECODER(DtStealthControlInteraction, paramName)
2317 
2322 
2324 {
2325 public:
2326 
2328  DtStealthControlDecoder(DtExerciseConn* exConn,
2329  DtInterClassDesc* classDesc);
2330 
2332  virtual ~DtStealthControlDecoder();
2333 
2336 
2338  DtStealthControlDecoder& operator=(const DtStealthControlDecoder& orig);
2339 
2340 protected:
2341 
2343 
2344  DtDECLARE_VIEW_CONTROL_PARAM_DECODER(ViewControlPdu);
2345 };
2346 #endif
2347 
2348 #if DtHLA
2349 
2350 #include <vl/interactionEncoder.h>
2351 
2352 class DtStealthControlInteraction;
2355 
2356 #define DtDECLARE_VIEW_CONTROL_PARAM_ENCODER(paramName) \
2357  DtDECLARE_PARAM_ENCODER(DtStealthControlInteraction, paramName)
2358 
2359 #define DtDEFINE_SIMPLE_VIEW_CONTROL_PARAM_ENCODER(paramName, netType, inspector) \
2360  DtDEFINE_SIMPLE_PARAM_ENCODER(DtStealthControlEncoder, DtStealthControlInteraction, \
2361  paramName, netType, \
2362  inspector)
2363 
2369 {
2370 public:
2371 
2372  DtStealthControlEncoder(DtExerciseConn* exConn,
2373  DtInterClassDesc* classDesc);
2374 
2376  virtual ~DtStealthControlEncoder();
2377 
2380 
2382  DtStealthControlEncoder& operator=(const DtStealthControlEncoder& orig);
2383 
2384 protected:
2385 
2387 
2388  DtDECLARE_VIEW_CONTROL_PARAM_ENCODER(ViewControlPdu);
2389 };
2390 
2391 #endif
2392 
2393 
2394 class DL_DLL_IGCONVRLINK DtMimicTrackVCPdu : public DtStealthControlPdu
2395 {
2396  public:
2397 
2398 
2399  DtMimicTrackVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2400  DtMimicTrackVCPdu(const DtNetViewControlPdu *initial,
2401  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2402 
2403 
2404  DtConstVector offset() const;
2405  void setOffset(DtConstVector loc);
2406 
2407  const DtGlobalObjectDesignator& attachId() const;
2408  void setAttachId(const DtGlobalObjectDesignator& id);
2409 
2410  void setTrackId(const DtGlobalObjectDesignator& id);
2411  const DtGlobalObjectDesignator& trackId() const;
2412 
2413  const DtString& trackMarkingText() const;
2414  void setTrackMarkingText(const DtString& markingText);
2415 
2416  const DtString& attachMarkingText() const;
2417  void setAttachMarkingText(const DtString& markingText);
2418 
2419 
2420  void setFromString(const char *str);
2421  const char *string() const;
2422  void printData() const;
2423 
2424  protected:
2425  DtVector theVec;
2426  DtGlobalObjectDesignator theId;
2429 
2430 };
2431 
2432 class DL_DLL_IGCONVRLINK DtMimicVCPdu : public DtStealthControlPdu
2433 {
2434  public:
2435 
2436 
2437  DtMimicVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2438  DtMimicVCPdu(const DtNetViewControlPdu *initial,
2439  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2440 
2441 
2442  DtConstVector offset() const;
2443  void setOffset(DtConstVector offset);
2444 
2445  const DtTaitBryan &bodyOrientation() const;
2446  void setBodyOrientation(const DtTaitBryan &ori);
2447 
2448  const DtGlobalObjectDesignator& attachId() const;
2449  void setAttachId(const DtGlobalObjectDesignator& id);
2450 
2451  const DtString& markingText() const;
2452  void setMarkingText(const DtString& markingText);
2453 
2454  void setFromString(const char *str);
2455  const char *string() const;
2456  void printData() const;
2457 
2458  protected:
2459  DtGlobalObjectDesignator theId;
2460  DtVector theVec;
2461  DtTaitBryan theAngles;
2462  DtString myMarkingText;
2463 
2464 };
2465 
2467 {
2468 public:
2469  DtOffsetMimicVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2470  DtOffsetMimicVCPdu(const DtNetViewControlPdu *initial,
2471  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2472 
2473 };
2474 
2475 class DL_DLL_IGCONVRLINK DtModelessVCPdu : public DtStealthControlPdu
2476 {
2477  public:
2478  DtModelessVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2479  DtModelessVCPdu(const DtNetViewControlPdu *initial,
2480  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2481 
2482  const DtGlobalObjectDesignator& primary() const;
2483  void setPrimary(const DtGlobalObjectDesignator& id);
2484 
2485  const DtGlobalObjectDesignator& secondary() const;
2486  void setSecondary(const DtGlobalObjectDesignator& id);
2487 
2488  int numEntitiesToRemove() const;
2489  void setNumEntitiesToRemove(int n);
2490 
2491  int numEntitiesToAdd() const;
2492  void setNumEntitiesToAdd(int n);
2493 
2494  const DtGlobalObjectDesignator& entityToRemove(int n) const;
2495  void setEntityToRemove(int n, const DtGlobalObjectDesignator& id);
2496 
2497  const DtGlobalObjectDesignator& entityToAdd(int n) const;
2498  void setEntityToAdd(int n, const DtGlobalObjectDesignator& id);
2499 
2500  void printData() const;
2501 
2502  protected:
2503  DtGlobalObjectDesignator theId;
2504 };
2505 
2506 class DL_DLL_IGCONVRLINK DtMoveVCPdu : public DtStealthControlPdu
2507 {
2508 public:
2509 
2510  enum Direction { Left, Right, Up, Down, Forward, Backward };
2511 
2512 public:
2513 
2514  DtMoveVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2515  DtMoveVCPdu(const DtNetViewControlPdu *initial,
2516  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2517 
2518  virtual ~DtMoveVCPdu() {}
2519 
2520  bool reset() const;
2521  void setReset(bool b);
2522 
2523  Direction turn() const;
2524  void setTurn(Direction d);
2525 
2526  Direction move() const;
2527  void setMove(Direction d);
2528 
2529  void setPosition(const DtVector& v);
2530  DtVector position() const;
2531 
2532  void setOrientation(const DtTaitBryan& o);
2533  DtTaitBryan orientation() const;
2534 
2535  virtual void setFromString(const char *str);
2536  virtual const char *string() const;
2537  virtual void printData() const;
2538 };
2539 
2543 
2544 class DL_DLL_IGCONVRLINK DtOptionsPdu : public DtStealthControlPdu
2545 {
2546 public:
2547 
2548  static const DtStealthOption DtStealthStepsize;
2549  static const DtStealthOption DtStealthTurnrate;
2550  static const DtStealthOption DtStealthIncStepsize;
2551  static const DtStealthOption DtStealthIncTurnrate;
2552  static const DtStealthOption DtStealthDecStepsize;
2553  static const DtStealthOption DtStealthDecTurnrate;
2554  static const DtStealthOption DtStealthDate;
2555  static const DtStealthOption DtStealthXREnabled;
2556  static const DtStealthOption DtStealthHATenabled;
2557  static const DtStealthOption DtStealthNextModelSet;
2558  static const DtStealthOption DtStealthPrevModelSet;
2559  static const DtStealthOption DtStealthSetCurrentModelSet;
2560  static const DtStealthOption DtStealthNextTextureSet;
2561  static const DtStealthOption DtStealthPrevTextureSet;
2562  static const DtStealthOption DtStealthSetCurrentTextureSet;
2563  static const DtStealthOption DtStealthTerrainScale;
2564  static const DtStealthOption DtStealthObjectScale;
2565  static const DtStealthOption DtStealthClouds;
2566  static const DtStealthOption DtStealthSkyDome;
2567  static const DtStealthOption DtStealthExit;
2568  static const DtStealthOption DtStealthMirroring;
2569  static const DtStealthOption DtStealthMirrorMessageEveryFrame;
2570  static const DtStealthOption DtStealthBroadcasting;
2571  static const DtStealthOption DtStealthClusteringLabels;
2572  static const DtStealthOption DtStealthTacticalGraphicsLabels;
2573  static const DtStealthOption DtStealthTacticalGraphics;
2574  static const DtStealthOption DtStealthShowAggregates;
2575  static const DtStealthOption DtStealthShowEmitters;
2576  static const DtStealthOption DtStealthVideoCaptureCommand;
2577  static const DtStealthOption DtStealthVideoCaptureFilename;
2578  static const DtStealthOption DtStealthVideoCaptureDirectory;
2579  static const DtStealthOption DtStealthVideoCaptureFilenameBase;
2580  static const DtStealthOption DtStealthVideoCaptureRecordInsets;
2581  static const DtStealthOption DtStealthVideoCaptureFramesPerSecond;
2582  static const DtStealthOption DtStealthConstrainToAll;
2583  static const DtStealthOption DtStealthBlockedDistance;
2584  static const DtStealthOption DtStealthUseNearClipForBlockedDistance;
2585  static const DtStealthOption DtStealthFeatureFilename;
2586  static const DtStealthOption DtStealthFeatureCommand;
2587 
2588 public:
2589 
2590  typedef enum
2591  {
2592  Stop = 0,
2593  Pause = 1,
2594  Unpause = 2,
2595  Record = 3
2596 
2597  } DtStealthControlVideoCaptureCommand;
2598 
2599  typedef enum
2600  {
2601  FeatureLoad = 0,
2602  FeatureClear = 1
2603 
2604  } DtStealthControlFeatureCommand;
2605 
2606 public:
2607 
2608 /******************* STANDARD CONSTRUCTORS ****************/
2609 
2610  DtOptionsPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2611  DtOptionsPdu(const DtNetViewControlPdu *initial,
2612  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2613 
2614 /****************** MUTATOR FUNCTIONS *******************/
2615 
2616  void setOverlayOption(DtOverlayOption option);
2617  void setLocatorRange(double range);
2618  void setSmoothing(DtSmoothingOption option);
2619  void setSmoothingPeriod(double period);
2620  void setSound(bool onOff);
2621  void setEntityLabels(bool onOff);
2622  void setTrailingEffects(bool onOff);
2623  void setTrajectoryHistory(bool onOff);
2624  void setRecording(bool onOff);
2625  void setAggregateLevel(int level);
2626  void setAggregateHighestOnly(bool onOff);
2627  void setAggregatesAltitudeControlled(bool onOff);
2628  void setNestedAggregates(bool onOff);
2629  void setNestedEntities(bool onOff);
2630  void setGroundClamping(bool onOff);
2631  void setClampRange(double range);
2632  void setFollowGround(bool onOff);
2633  void setConstrainWithFloor(bool onOff);
2634  void setFloor(double height);
2635  void setTimeOfDay(double time);
2636  void setNearClip(double clip);
2637  void setFarClip(double clip);
2638  void setFov(double fov);
2639  void setFog(bool onOff);
2640  void setNearFog(double fog);
2641  void setFarFog(double fog);
2642  void setTexture(bool onOff);
2643  void setDatabaseToLoad(const DtString& db);
2644  void setStepsize(float step);
2645  void setTurnrate(float step);
2646  void setDate(const DtString& date);
2647  void setIncrementStepsize(bool b);
2648  void setIncrementTurnrate(bool b);
2649  void setDecrementStepsize(bool b);
2650  void setDecrementTurnrate(bool b);
2651  void setXr(bool onOff);
2652  void setHatLabels(bool onOff);
2653  void setCurrentModelSet(const DtString& setname);
2654  void setShowNextModelSet(bool b);
2655  void setShowPrevModelSet(bool b);
2656  void setCurrentTextureSet(const DtString& setname);
2657  void setShowNextTextureSet(bool b);
2658  void setShowPrevTextureSet(bool b);
2659  void setTerrainScale(double s);
2660  void setObjectScale(double s);
2661  void setExit(bool b);
2662  void setSkyDome(bool b);
2663  void setClouds(bool b);
2664  void setMirroring(bool b);
2665  void setMirrorMessageEveryFrame(bool b);
2666  void setBroadcasting(bool b);
2667  void setClusteringLabels(bool b);
2668  void setTacticalGraphicsLabels(bool b);
2669  void setTacticalGraphics(bool b);
2670  void setShowAggregates(bool b);
2671  void setShowEmitters(bool b);
2672  void setVideoCaptureCommand(
2673  DtStealthControlVideoCaptureCommand videoCaptureCommand);
2674  void setVideoCaptureRecordInsets(bool videoCaptureRecordInsets);
2675  void setVideoCaptureFramesPerSecond(int videoCaptureFramesPerSecond);
2676  void setVideoCaptureFilename(const DtString& videoCaptureFilename);
2677  void setVideoCaptureFilenameBase(const DtString& videoCaptureFilenameBase);
2678  void setVideoCaptureDirectory(const DtString& videoCaptureDirectory);
2679  void setConstrainToAll( bool b );
2680  void setUseNearClipForBlockedDistance( bool b );
2681  void setBlockedDistance( double distance );
2682  void setFeatureFilename( const DtString& featureFilename );
2683  void setFeatureCommand( DtStealthControlFeatureCommand featureCommand );
2684 
2685 
2686 /****************** INSPECTOR FUNCTIONS *******************/
2687 
2694  bool optionPresent(DtStealthOption option) const;
2695 
2696  DtOverlayOption overlayOption() const;
2697  double locatorRange() const;
2698  DtSmoothingOption smoothing() const;
2699  double smoothingPeriod() const;
2700  bool sound() const;
2701  bool entityLabels() const;
2702  bool trailingEffects() const;
2703  bool trajectoryHistory() const;
2704  bool recording() const;
2705  int aggregateLevel() const;
2706  bool aggregateHighestOnly() const;
2707  bool aggregatesAltitudeControlled() const;
2708  bool nestedAggregates() const;
2709  bool nestedEntities() const;
2710  bool groundClamping() const;
2711  double clampRange() const;
2712  bool followGround() const;
2713  bool constrainWithFloor() const;
2714  double floor() const;
2715  double timeOfDay() const;
2716  double nearClip() const;
2717  double farClip() const;
2718  double fov() const;
2719  bool fog() const;
2720  double nearFog() const;
2721  double farFog() const;
2722  bool texture() const;
2723  const DtString databaseToLoad() const;
2724  float stepsize() const;
2725  float turnrate() const;
2726  bool incrementStepsize() const;
2727  bool incrementTurnrate() const;
2728  bool decrementStepsize() const;
2729  bool decrementTurnrate() const;
2730  const DtString date() const;
2731  bool xr() const;
2732  bool hatLabels() const;
2733  const DtString currentModelSet() const;
2734  bool showNextModelSet() const;
2735  bool showPrevModelSet() const;
2736  const DtString currentTextureSet() const;
2737  bool showNextTextureSet() const;
2738  bool showPrevTextureSet() const;
2739  double terrainScale() const;
2740  double objectScale() const;
2741  bool exit() const;
2742  bool skyDome() const;
2743  bool clouds() const;
2744  bool mirroring() const;
2745  bool mirrorMessageEveryFrame() const;
2746  bool broadcasting() const;
2747  bool clusteringLabels() const;
2748  bool tacticalGraphicsLabels() const;
2749  bool tacticalGraphics() const;
2750  bool showAggregates() const;
2751  bool showEmitters() const;
2752  DtStealthControlVideoCaptureCommand videoCaptureCommand() const;
2753  bool videoCaptureRecordInsets() const;
2754  int videoCaptureFramesPerSecond() const;
2755  const DtString videoCaptureFilename() const;
2756  const DtString videoCaptureFilenameBase() const;
2757  const DtString videoCaptureDirectory() const;
2758  bool useNearClipForBlockedDistance() const;
2759  bool constrainedToAll() const;
2760  double blockedDistance() const;
2761  DtStealthControlFeatureCommand featureCommand() const;
2762  const DtString featureFilename() const;
2763 
2764  void printData() const;
2765 
2768  void setFromString(const char *str);
2769  const char* string() const;
2770 
2771 protected:
2772 
2775  void setOptionPresent(DtStealthOption option);
2776  void clearOptionPresent(DtStealthOption option);
2777 
2778 protected:
2779 
2781  DtString myStr;
2782 };
2783 
2784 class DL_DLL_IGCONVRLINK DtOrbitVCPdu : public DtStealthControlPdu
2785 {
2786  public:
2787 
2788 
2789  DtOrbitVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2790  DtOrbitVCPdu(const DtNetViewControlPdu *initial,
2791  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2792 
2793  float radius() const;
2794  void setRadius(float r);
2795 
2796  float azimuthRate() const;
2797  void setAzimuthRate(float a);
2798 
2799  float heading() const;
2800  void setHeading(float h);
2801 
2802  float pitch() const;
2803  void setPitch(float p);
2804 
2805  float headingOffset() const;
2806  void setHeadingOffset(float o);
2807 
2808  float pitchOffset() const;
2809  void setPitchOffset(float p);
2810 
2811  float roll() const;
2812  void setRoll(float r);
2813 
2814  const DtString& markingText() const;
2815  void setMarkingText(const DtString& markingText);
2816 
2817 
2818  const DtGlobalObjectDesignator& attachId() const;
2819  void setAttachId(const DtGlobalObjectDesignator& id);
2820 
2821  void setFromString(const char *str);
2822  const char *string() const;
2823  void printData() const;
2824 
2825  protected:
2826  DtGlobalObjectDesignator theId;
2827  DtString myMarkingText;
2828 
2829 };
2830 
2831 class DL_DLL_IGCONVRLINK DtPivotVCPdu : public DtStealthControlPdu
2832 {
2833 
2834 public:
2835 
2836 
2837  DtPivotVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
2838  DtPivotVCPdu(const DtNetViewControlPdu *initial,
2839  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
2840 
2841  virtual ~DtPivotVCPdu() {}
2842 
2843  virtual float radius() const;
2844  virtual void setRadius(float r);
2845 
2846  virtual float bodyHeading() const;
2847  virtual void setBodyHeading(float h);
2848 
2849  virtual float pitch() const;
2850  virtual void setPitch(float p);
2851 
2852  virtual float headingOffset() const;
2853  virtual void setHeadingOffset(float o);
2854 
2855  virtual float pitchOffset() const;
2856  virtual void setPitchOffset(float p);
2857 
2858  virtual float roll() const;
2859  virtual void setRoll(float r);
2860 
2862  virtual const DtVector& pivotPoint() const;
2863  virtual void setPivotPoint(const DtVector& v);
2864 
2865  virtual void setFromString(const char *str);
2866  virtual const char *string() const;
2867  virtual void printData() const;
2868 
2869 protected:
2870 
2871  mutable DtVector myPivotPoint;
2872 };
2873 
2874 class DL_DLL_IGCONVRLINK DtRequestStateVCPdu : public DtStealthControlPdu
2875 {
2876 public:
2877 
2878  DtRequestStateVCPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER)
2879  {
2880  initPdu(DtViewControlStaticSize, buffer);
2882  }
2883 
2885  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0)
2886  {
2887  initPdu(initial, buffer, 0);
2888  }
2889 };
2890 
2892 {
2893 public:
2894  DtSdc2DPositionedObject(DtExerciseConn* exConn, unsigned id,
2895  const DtString& objName);
2896 
2897  // \brief Virtual destructor
2898  virtual ~DtSdc2DPositionedObject();
2899 
2900 private:
2906 
2911 
2916 
2917 public:
2923  virtual DtSdcVector2D position() const = 0;
2924 
2930  virtual void setPosition( const DtSdcVector2D& position ) = 0;
2931 };
2932 
2942 
2944 {
2945 public:
2946 typedef enum
2947 {
2948  attachmentTypeUndefined = 0,
2949  attachmentTypeScene = 1,
2950  attachmentTypeEntity = 2,
2951  attachmentTypeDrawObject = 3
2952 } DtSdc3DAttachmentType;
2953 
2954 public:
2959  DtSdc3DAttachPoint( const DtVector& location );
2960 
2965  DtSdc3DAttachPoint( const DtGlobalObjectDesignator& entityId );
2966 
2977  DtSdc3DAttachPoint( const DtGlobalObjectDesignator& drawObjectId, double relativePosition);
2978 
2980  DtSdc3DAttachPoint( const DtSdc3DAttachPoint& orig );
2981 
2983  DtSdc3DAttachPoint& operator=( const DtSdc3DAttachPoint& rhs );
2984 
2986  virtual ~DtSdc3DAttachPoint();
2987 
2990 
2991 public:
2992 
2998  virtual DtSdc3DAttachmentType attachmentType() const;
2999 
3006  virtual DtVector location() const;
3007  virtual DtVector& location();
3008 
3016  virtual void setLocation( DtVector location );
3017 
3024  virtual const DtGlobalObjectDesignator& drawObjectId() const;
3025 
3033  virtual void setDrawObjectId( const DtGlobalObjectDesignator& drawObjectId );
3034 
3039  virtual double relativePosition() const;
3040 
3045  virtual void setRelativePosition( double relativePosition );
3046 
3054  virtual DtGlobalObjectDesignator entityId() const;
3055 
3063  virtual void setEntityId( const DtGlobalObjectDesignator& entityId );
3064 
3065  virtual bool isAttached() const;
3066 
3067  virtual const DtGlobalObjectDesignator& attachedId() const;
3068 
3069 protected:
3070 
3071  DtVector myLocation;
3072  DtGlobalObjectDesignator myAttachedId;
3074 
3076 };
3077 
3079 {
3080 public:
3081  DtSdc3DPositionedObject(DtExerciseConn* exConn, unsigned id,
3082  const DtString& objName);
3083 
3084  // \brief Virtual destructor
3085  virtual ~DtSdc3DPositionedObject();
3086 
3087 private:
3093 
3098 
3103 
3104 public:
3111  virtual const DtSdc3DAttachPoint& attachment() const = 0;
3112 
3117  virtual void setAttachment(const DtSdc3DAttachPoint& attachment) = 0;
3118 };
3119 
3121 {
3122 public:
3123  DtSdc3DTwoPositionedObject(DtExerciseConn* exConn, unsigned id,
3124  const DtString& objName);
3125 
3126  // \brief Virtual destructor
3127  virtual ~DtSdc3DTwoPositionedObject();
3128 
3129 private:
3135 
3140 
3145 
3146 public:
3153  virtual const DtSdc3DAttachPoint& startAttachment() const = 0;
3154 
3159  virtual void setStartAttachment(const DtSdc3DAttachPoint& attachment) = 0;
3160 
3167  virtual const DtSdc3DAttachPoint& endAttachment() const = 0;
3168 
3173  virtual void setEndAttachment(const DtSdc3DAttachPoint& attachment) = 0;
3174 };
3175 
3182 
3193 
3195 {
3196 public:
3207  DtSdcArea3DObject(DtExerciseConn* exConn, unsigned id, std::vector<DtVector> vertices,
3208  DtVector32 offset = DtVector32::zero(),
3210  const DtString& textureDirectory = "",
3211  const DtString& textureFilename = DtString::nullString(),
3212  int numTextureTiles = 0, bool flashing = false);
3213 
3214  // \brief Virtual destructor
3215  virtual ~DtSdcArea3DObject();
3216 
3217 private:
3223 
3227  DtSdcArea3DObject(const DtSdcArea3DObject& orig);
3228 
3233 
3234 public:
3241  virtual const DtVector32& offset() const;
3242 
3248  virtual void setOffset(const DtVector32& off);
3249 
3257  virtual const DtSdcColor& color() const;
3258 
3266  virtual void setColor (const DtSdcColor& color);
3267 
3273  virtual bool flashing() const;
3274 
3280  virtual void setFlashing(bool flashing);
3281 
3287  virtual const DtString& textureDirectory() const;
3288 
3294  virtual void setTextureDirectory(const DtString& str);
3295 
3301  virtual const DtString& textureFilename() const;
3302 
3308  virtual void setTextureFilename(const DtString& str);
3309 
3310 
3316  virtual int numTextureTiles() const;
3317 
3323  virtual void setNumTextureTiles(int numTextureTiles);
3324 
3333  virtual void update();
3334 
3343  virtual const DtVector& vertex(int index) const;
3344  //virtual DtVector& vertex();
3345 
3353  virtual void setVertex(int index, const DtVector& vertex);
3354 
3355  virtual void setRemoteGraphicSet(const std::string& setName);
3356 
3357 protected:
3358  virtual void calculateBoundingSphere();
3359  virtual void setStateRecordUserData();
3360  void initRecords();
3361 
3362 protected:
3363  DtVector32 myOffset;
3367  std::vector<DtVector> myVertices;
3368 
3372 
3373  std::vector<DtEnvironmentalPointRecord> myPointRecords;
3374  DtEnvironmentalBoundingSphereRecord myBoundingSphereRecord;
3376 
3377  DtVector myEmptyVertex;
3378 };
3379 
3380 /*
3381  DtSdc3DArea
3382 */
3383 
3384 class DtSdcAttachablePduV0;
3385 
3387 {
3388 public:
3389 
3390  typedef enum
3391  {
3392  DtVcObjectNoAttach = 0,
3393  DtVcObjectNoAttachNoAttach = 1,
3394  DtVcObjectAttachedToEntity = 2,
3395  DtVcObjectAttachedToObject = 3,
3396  DtVcObjectAttachedToEntityNoAttach = 4,
3397  DtVcObjectAttachedToObjectNoAttach = 5,
3398  DtVcObjectAttachedToNoAttachEntity = 6,
3399  DtVcObjectAttachedToNoAttachObject = 7,
3400  DtVcObjectAttachedToEntityObject = 8,
3401  DtVcObjectAttachedToObjectEntity = 9,
3402  DtVcObjectAttachedToEntityEntity = 10,
3403  DtVcObjectAttachedToObjectObject = 11
3404  } DtVcObjectAttachment;
3405 
3406  typedef enum
3407  {
3408  DtVcStyleNoFlashing =0x00,
3409  DtVcStyleFlashing =0x04,
3410  DtVcDrawingStyleEntry =0x04
3411  } DtVcDrawingStyle;
3412 
3414  // 2 (line, cylinder) elements
3415  virtual const DtVcObjectAttachment attachmentType() const;
3416 
3418  // -100, -100 (lower left) to 100, 100 (upper right)
3419  virtual void attachTo(const DtNetInt8 pos[2]);
3420 
3422  virtual void attachTo(const DtNetInt8 pos1[2], const DtNetInt8 pos2[2]);
3423 
3425  virtual void attachTo(const DtVector &pos);
3426  virtual void attachTo(const DtNetU32 id);
3427  virtual void attachTo(const DtGlobalObjectDesignator& id);
3428 
3430  virtual void attachTo(const DtNetU32 id1, const DtNetU32 id2);
3431  virtual void attachTo(const DtGlobalObjectDesignator& id1, const DtGlobalObjectDesignator& id2);
3432  virtual void attachTo(const DtVector &pos1, const DtVector &pos2);
3433  virtual void attachTo(const DtGlobalObjectDesignator& id1, const DtNetU32 id2);
3434  virtual void attachTo(const DtNetU32 id1, const DtGlobalObjectDesignator& id2);
3435  virtual void attachTo(const DtGlobalObjectDesignator& id, const DtVector &pos);
3436  virtual void attachTo(const DtVector &pos, const DtGlobalObjectDesignator& id);
3437  virtual void attachTo(const DtNetU32 id, const DtVector &pos);
3438  virtual void attachTo(const DtVector &pos, const DtNetU32 id);
3439 
3450  virtual void setRelativeLocation(DtNetU8 percentage, int index=0);
3451  virtual const DtNetU8 relativeLocation(int index=0) const;
3452 
3454  virtual void setOffset(const DtVector &offsetVector);
3455  virtual DtVector offset() const;
3456 
3457  virtual const DtGlobalObjectDesignator attachEntityId(int index) const;
3458  virtual const DtNetU32 attachObjectId(int index) const;
3459  virtual DtVector position(int index) const;
3460 
3461  virtual void setColor(DtNetU8 color[4]);
3462  virtual const DtNetU8 *color() const;
3463 
3464  virtual void setFlashing(bool onOff);
3465  virtual const bool flashing() const;
3466 
3467  virtual void setFromString(const char *);
3468  virtual const char *string() const;
3469 
3470  virtual void printData() const;
3471  static const char *typeString(DtVcObjectAttachment param);
3472 
3473 protected:
3474 
3475 
3476  // For internal use only. AttachmentType is normally set autmatically
3477  // based on the form of attachTo() used.
3478  virtual void setAttachmentType( DtVcObjectAttachment attachmentType );
3479 };
3488 {
3489 public:
3492 
3495 
3497  DtSdcAttributeValue& operator=( const DtSdcAttributeValue& rhs );
3498 
3501 
3504  const DtString& textValue() const;
3505  void setTextValue( const DtString& textValue );
3507 
3511  double xValue() const;
3512  void setXValue( double x );
3513 
3516  double yValue() const;
3517  void setYValue( double y );
3519 
3524  bool dirty() const;
3525  void setDirty( bool dirty ) ;
3527 
3529  DtAttributeValueUpdate& attributeValueUpdate();
3530  const DtAttributeValueUpdate& attributeValueUpdate() const;
3531 
3532 protected:
3533  DtString myTextValue;
3534  double myXValue;
3535  double myYValue;
3536  bool myDirty;
3538 };
3539 
3540 
3541 typedef std::map<DtString, DtSdcAttributeValue*> DtSdcAttributeValueMap;
3543 
3551 {
3552 public:
3570  DtSdcAttributeGroupObject(DtExerciseConn* exConn, unsigned id,
3573  const DtVector32& enuOffset = DtVector32::zero(),
3574  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
3575 
3576  // \brief Virtual destructor
3577  virtual ~DtSdcAttributeGroupObject();
3578 
3579 private:
3585 
3590 
3595 
3596 
3597 public:
3603  virtual DtSdcAttributeGroupTemplateObject* attributeGroupTemplate() const;
3604 
3611  virtual const DtSdc3DAttachPoint& attachment() const;
3612 
3617  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
3618 
3624  virtual const DtVector32& offset() const;
3625 
3630  virtual void setOffset(const DtVector32& enuOffset);
3631 
3637  virtual const DtSdcColor& color() const;
3638 
3644  virtual void setColor (const DtSdcColor& color);
3645 
3652  virtual bool flashing() const;
3653 
3660  virtual void setFlashing(bool flashing);
3661 
3669  virtual DtString bmpAttributeValue(const DtString& attName) const;
3670 
3680  virtual void setBmpAttributeValue(const DtString& attName, const DtString& filename);
3681 
3690  virtual double numericAttributeValue(const DtString& attName) const;
3691 
3701  virtual void setNumericAttributeValue(const DtString& attName, double xVal);
3702 
3713  virtual double valueBarAttributeValue(const DtString& attName) const;
3714 
3727  virtual void setValueBarAttributeValue(const DtString& attName, double xVal);
3728 
3739  virtual double graphAttributeValueX(const DtString& attName) const;
3740 
3752  virtual void setGraphAttributeValueX(const DtString& attName, double xVal);
3753 
3762  virtual double graphAttributeValueY(const DtString& attName) const;
3763 
3773  virtual void setGraphAttributeValueY(const DtString& attName, double yVal);
3774 
3784  virtual DtSdcAttributeValueMap& attributeValueMap();
3785 
3786  virtual void setRemoteGraphicSet(const std::string& setName);
3787 
3796  virtual void update();
3797 
3798 protected:
3799  virtual void createAttributes();
3800  virtual void destroyAttributes();
3801  virtual void copyAttributes(const DtSdcAttributeValueMap& valueMap);
3802 
3803 protected:
3804  DtEnvironmentalPointRecord myPointRecord;
3807 
3809  DtVector32 myEnuOffset;
3813  DtSdcAttributeValueMap myValueMap;
3814 };
3815 
3816 
3824 {
3825 public:
3826 
3827  typedef enum
3828  {
3829  DtSdcAttributeTypeNoValue = 0,
3830  DtSdcAttributeValueNumeric = 1,
3831  DtSdcAttributeTypeValueBar = 2,
3832  DtSdcAttributeTypeValueGraph = 3,
3833  DtSdcAttributeTypeBitmap = 4,
3834  } DtSdcAttributeType;
3835 
3836 public:
3837 
3851  DtSdcAttributeTemplateObject(const DtGlobalObjectDesignator& templateId,
3852  const DtString& name, DtSdcAttributeType attributeType );
3853 
3854  // \brief Virtual destructor
3855  virtual ~DtSdcAttributeTemplateObject();
3856 
3859  const DtSdcAttributeTemplateObject& orig );
3860 
3862  DtSdcAttributeTemplateObject& operator=(
3863  const DtSdcAttributeTemplateObject& rhs );
3864 
3865 private:
3871 
3872 public:
3878  virtual const DtString& name() const;
3879 
3885  virtual const DtGlobalObjectDesignator& templateId() const;
3886 
3892  virtual DtSdcAttributeType attributeType() const;
3893 
3894  virtual const DtAttributeTemplateStateRecord& attributeTemplateRecord() const;
3895 
3896 protected:
3897  DtGlobalObjectDesignator myTemplateId;
3898  DtString myName;
3901 };
3902 
3904 typedef std::list<DtSdcAttributeTemplateObject*> DtSdcAttributeTemplateList;
3905 
3908 typedef std::map<DtString, DtSdcAttributeTemplateObject*>
3910 
3918 {
3919 public:
3927  DtSdcAttributeGroupTemplateObject(DtExerciseConn* exConn, unsigned id,
3928  const DtString& name);
3929 
3930  // \brief Virtual destructor
3932 
3933 private:
3939 
3944  const DtSdcAttributeGroupTemplateObject& orig);
3945 
3951 
3952 public:
3958  virtual const DtString& name() const;
3959 
3971  virtual DtSdcAttributeTemplateObject* createAttributeTemplate(const DtString& name,
3973 
3985  virtual DtSdcAttributeTemplateObject* createAttributeTemplate(const DtString& name,
3986  double minRange, double maxRange);
3987 
3993  virtual DtSdcAttributeTemplateList& attributeTemplates();
3994 
4001  virtual DtSdcAttributeTemplateObject* attributeTemplate(
4002  const DtString& name);
4003 
4008  virtual void update();
4009 
4010 protected:
4011  DtString myName;
4013  DtSdcAttributeTemplateList myAttributeTemplateList;
4014 };
4015 
4016 /*
4017  This Pdu creates an attribute, associated with an attribute group
4018  DtSdcAttributeGroup
4019  DtSdcAttributeNoValue
4020  DtSdcAttributeSingleValue
4021  DtSdcAttributeGraphicSingleValue
4022  DtSdcAttributeListValue
4023  DtSdcAttributeGraphicListValue
4024  DtSdcAttributeBitmap
4025  DtSdcAttributeGroupTemplate
4026 */
4027 
4029 {
4030 public:
4031  virtual void setName( DtString name );
4032  virtual const DtString name() const;
4033 
4034  virtual const DtNetU32 attributeGroupId() const;
4035  virtual void setAttributeGroupId( DtNetU32 lid );
4036 
4037  virtual const bool hasRange() const;
4038  virtual const double rangeMin() const;
4039  virtual const double rangeMax() const;
4040  virtual void setRange( double min, double max );
4041 
4042  virtual void setFromString( const char*str );
4043  virtual const char* string() const;
4044 
4045  virtual void printData() const;
4046 };
4047 
4049 {
4050 public:
4051  DtSdcAttributePdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
4052  DtSdcAttributePdu( const DtNetViewControlPdu* initial,
4053  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
4054 };
4055 
4057 {
4058 public:
4059  DtSdcAttributePduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
4060  DtSdcAttributePduV0( const DtNetViewControlPdu* initial,
4061  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
4062 };
4063 
4064 /*
4065  This Pdu sets a value for an Attribute
4066  DtSdcAttributeValueSet
4067  DtSdcAttributeValueReset
4068  DtSdcAttributeValueSetText
4069 */
4070 
4073 {
4074 public:
4075  virtual void setText(DtString name);
4076  virtual const DtString text() const;
4077 
4078  virtual const DtNetU32 groupId() const;
4079  virtual void setGroupId(DtNetU32 lid);
4080 
4081  virtual const double valueX() const;
4082  virtual const double valueY() const;
4083  virtual void setValueX(double val);
4084  virtual void setValueY(double val);
4085 
4086  virtual void setFromString(const char *str);
4087  virtual const char* string() const;
4088 
4089  virtual void printData() const;
4090 };
4091 
4094 {
4095 public:
4096 
4097  DtSdcAttributeUpdatePdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
4099  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
4100 };
4101 
4104 {
4105 public:
4106 
4107  DtSdcAttributeUpdatePduV0(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
4109  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
4110 };
4111 
4120 {
4121 public:
4134  const DtGlobalObjectDesignator& templateId,
4135  const DtString& name, double minRange, double maxRange);
4136 
4137  // \brief Virtual destructor
4139 
4142  const DtSdcBarAttributeTemplateObject& orig );
4143 
4146  const DtSdcBarAttributeTemplateObject& rhs );
4147 
4148 private:
4154 
4155 public:
4156 
4162  virtual double minRange() const;
4163 
4164 
4170  virtual double maxRange() const;
4171 
4172 protected:
4173  double myMinRange;
4174  double myMaxRange;
4175 
4176 };
4177 
4178 /*
4179  Use this pdu to send commands to other objects:
4180  The command are:
4181 
4182  DtVcRemove remove the object with id objectId()
4183  DtVcHide Hide an object and any object in it. i.e. If the receiver is a
4184  layer, all objects in the layer will be affected.
4185  DtVcShow Show an object and any object in it. i.e. If the receiver is a
4186  layer, all objects in the layer will be affected.
4187  DtVcAddToLayer Add the object to layer with id layerId()
4188  DtVcRemoveFromLayer Remove the object from layer with id layerId()
4189 
4190  Use setType to specify the command you want to send.
4191 */
4192 
4194 {
4195 public:
4196  virtual const DtNetU32 layerId() const;
4197  virtual void setLayerId( DtNetU32 lid );
4198 
4199  virtual void setFromString( const char *str );
4200  virtual const char* string() const;
4201 
4202  virtual void printData() const;
4203 };
4204 
4205 
4207 {
4208 public:
4209  DtSdcCommandPdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
4210  DtSdcCommandPdu( const DtNetViewControlPdu* initial,
4211  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
4212 };
4213 
4215 {
4216 public:
4217  DtSdcCommandPduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
4218  DtSdcCommandPduV0( const DtNetViewControlPdu* initial,
4219  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
4220 };
4221 
4233 {
4234 protected:
4257  DtSdcEllipsoidCuboidBase(DtExerciseConn* exConn, unsigned id, const DtString& objName,
4258  const DtSdc3DAttachPoint& attachment,const DtVector& dimensions,
4259  const DtVector32& enuOffset = DtVector32::zero(),
4260  const DtTaitBryan& rotation = zeros,
4261  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
4262 
4263  // \brief Virtual destructor
4264  virtual ~DtSdcEllipsoidCuboidBase();
4265 
4266 private:
4272 
4277 
4282 
4283 public:
4284 
4291  virtual const DtSdc3DAttachPoint& attachment() const;
4292 
4297  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
4298 
4305  virtual const DtVector32& offset() const;
4306 
4311  virtual void setOffset(const DtVector32& off);
4317  virtual const DtTaitBryan& rotation() const;
4318 
4324  virtual void setRotation(const DtTaitBryan& rotation);
4325 
4331  virtual const DtSdcColor& color() const;
4332 
4338  virtual void setColor (const DtSdcColor& color);
4339 
4345  virtual bool flashing() const;
4346 
4352  virtual void setFlashing(bool flashing);
4353 
4354  virtual void setRemoteGraphicSet(const std::string& setName);
4355 
4356 
4357 private:
4358  void initRecords();
4359  // Initializer for DtTaitBryan
4360  static DtTaitBryan zeros;
4361 
4362 protected:
4364  DtVector myDimensions;
4365  DtVector32 myOffset;
4367  DtTaitBryan myRotation;
4370 };
4371 
4372 
4373 
4381 {
4382 public:
4407  DtSdcCuboidObject(DtExerciseConn* exConn, unsigned id, const DtSdc3DAttachPoint& attachment,
4408  double length, double width, double height,
4409  const DtVector32& enuOffset = DtVector32::zero(),
4410  const DtTaitBryan& rotation = zeros,
4411  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
4412 
4413  // \brief Virtual destructor
4414  virtual ~DtSdcCuboidObject();
4415 
4421  virtual double length() const;
4422 
4428  virtual void setLength(double length);
4429 
4435  virtual double width() const;
4436 
4442  virtual void setWidth(double width);
4443 
4449  virtual double height() const;
4450 
4456  virtual void setHeight(double height);
4457 
4458  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
4459  virtual void setRotation(const DtTaitBryan& rotation);
4460 
4461  virtual void update();
4462 
4463 private:
4469 
4473  DtSdcCuboidObject(const DtSdcCuboidObject& orig);
4474 
4479 
4480  void initCuboidRecords();
4481 
4482 protected:
4483  DtEnvironmentalRectangularVolumeRecord myCuboidRecord;
4484 
4485 private:
4486  // Initializer for DtTaitBryan
4487  static DtTaitBryan zeros;
4488 
4489 };
4490 
4501 {
4502 public:
4526 
4527 
4528  DtSdcCylinderObject(DtExerciseConn* exConn, unsigned id,
4529  const DtSdc3DAttachPoint& attachment, double length,
4530  const DtSdcVector2D& diameters, const DtVector32& offset = DtVector32::zero(),
4531  const DtTaitBryan& rotation = zeros,
4532  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
4533 
4555  DtSdcCylinderObject(DtExerciseConn* exConn, unsigned id,
4556  const DtSdc3DAttachPoint& startAttachment,
4557  const DtSdc3DAttachPoint& endAttachment,
4558  const DtSdcVector2D& diameters,
4559  const DtVector32& offset = DtVector32::zero(),
4560  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false );
4561 
4562  // \brief Virtual destructor
4563  virtual ~DtSdcCylinderObject();
4564 
4565 private:
4571 
4576 
4581 
4582 public:
4589  virtual const DtSdc3DAttachPoint& attachment() const;
4590 
4595  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
4596 
4603  virtual const DtSdc3DAttachPoint& startAttachment() const;
4604 
4609  virtual void setStartAttachment(const DtSdc3DAttachPoint& startAttachment);
4610 
4617  virtual const DtSdc3DAttachPoint& endAttachment() const;
4618 
4623  virtual void setEndAttachment(const DtSdc3DAttachPoint& endAttachment);
4624 
4631  virtual const DtVector32& offset() const;
4632 
4638  virtual void setOffset(const DtVector32& off);
4639 
4645  virtual double length() const;
4646 
4652  virtual void setLength(double length);
4653 
4660  virtual const DtSdcVector2D& diameters() const;
4661 
4667  virtual void setDiameters(const DtSdcVector2D& diameters);
4668 
4675  virtual const DtTaitBryan& rotation() const;
4676 
4683  virtual void setRotation(const DtTaitBryan& rotation);
4684 
4690  virtual const DtSdcColor& color() const;
4691 
4697  virtual void setColor (const DtSdcColor& color);
4698 
4704  virtual bool flashing() const;
4705 
4711  virtual void setFlashing(bool flashing);
4712 
4713  virtual void setRemoteGraphicSet(const std::string& setName);
4714 
4723  virtual void update();
4724 
4725 protected:
4726  void initRecords();
4727 
4728 private:
4729  // Initializer for DtTaitBryan
4730  static DtTaitBryan zeros;
4731 
4732 protected:
4733  DtSdc3DAttachPoint myStartAttachment; // also single attachment
4735  double myLength;
4737  DtVector32 myOffset;
4739  DtTaitBryan myRotation;
4741 
4745 };
4746 
4759 {
4760 protected:
4785  DtSdcEllRectBase(DtExerciseConn* exConn, unsigned id, const DtString& objName,
4786  const DtSdcVector2D& position, const DtSdcVector2D& size,
4787  double rotation = 0.0, double scale = 1.0,
4788  DtSdcColor color = DtSdcColor::DtSdcWhite, bool fill = false,
4789  unsigned pattern = 0xffffffff, bool flashing = false);
4790  /*
4795  DtSdcEllRectBase( const DtSdcEllRectBase& orig );
4796 
4798  DtSdcEllRectBase& operator=( const DtSdcEllRectBase& rhs );
4799  */
4800  // \brief Virtual destructor
4801  virtual ~DtSdcEllRectBase();
4802 
4803 private:
4808  DtSdcEllRectBase();
4809 
4810 public:
4816  virtual DtSdcVector2D position() const;
4817 
4823  virtual void setPosition( const DtSdcVector2D& position );
4824 
4830  virtual DtSdcVector2D size() const;
4831 
4837  virtual void setSize( const DtSdcVector2D& size );
4838 
4844  virtual double rotation() const;
4845 
4851  virtual void setRotation( double rotation );
4852 
4858  virtual const DtSdcColor& color() const;
4859 
4865  virtual void setColor (const DtSdcColor& color );
4866 
4873  virtual bool fill() const;
4874 
4881  virtual void setFill( bool fill );
4882 
4888  virtual unsigned pattern() const;
4889 
4897  virtual void setPattern( unsigned pattern );
4898 
4904  virtual bool flashing() const;
4905 
4911  virtual void setFlashing( bool flashing );
4912 
4918  virtual double scale() const;
4919 
4925  virtual void setScale( double scale );
4926 
4927  virtual void setRemoteGraphicSet(const std::string& setName);
4928 
4937  virtual void update();
4938 
4939 protected:
4943  unsigned myPattern;
4944  bool myFill;
4945  double myRotation;
4947  double myScale;
4948 
4950 };
4951 
4952 
4960 {
4961 public:
4985  DtSdcEllipseObject(DtExerciseConn* exConn, unsigned id, const DtSdcVector2D& position,
4986  const DtSdcVector2D& size, double rotation = 0.0, double scale = 1.0,
4987  DtSdcColor color = DtSdcColor::DtSdcWhite, bool fill = false,
4988  unsigned pattern = 0xffffffff, bool flashing = false );
4989  /*
4994  DtSdcEllipseObject( const DtSdcEllipseObject& orig );
4995 
4997  DtSdcEllipseObject& operator=( const DtSdcEllipseObject& rhs );
4998  */
4999 
5000  // \brief Virtual destructor
5001  virtual ~DtSdcEllipseObject();
5002 
5003 private:
5009 
5010 };
5011 
5021 {
5022 public:
5043  DtSdcEllipsoidObject(DtExerciseConn* exConn, unsigned id, const DtSdc3DAttachPoint& attachment,
5044  const DtVector& diameters, const DtVector32& enuOffset = DtVector32::zero(),
5045  const DtTaitBryan& rotation = zeros,
5046  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
5047 
5048  // \brief Virtual destructor
5049  virtual ~DtSdcEllipsoidObject();
5050 
5051 
5057  virtual const DtVector& diameters() const;
5058 
5064  virtual void setDiameters(const DtVector& diameters);
5065 
5066  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
5067  virtual void setRotation(const DtTaitBryan& rotation);
5068 
5069  virtual void update();
5070 
5071 protected:
5072  DtEnvironmentalEllipsoidRecord myEllipsoidRecord;
5073 
5074 
5075 private:
5081 
5086 
5091 
5092  void initEllipsoidRecords();
5093 
5094 private:
5095  // Initializer for DtTaitBryan
5096  static DtTaitBryan zeros;
5097 
5098 };
5099 
5100 /*
5101  This Pdu creates a new layer with name name() and id objectId().
5102  If the object already exists, it replaces the old one and if the object
5103  is a layer, it clean up the layer (remove all objects from the layer)
5104 */
5106 {
5107 public:
5108  virtual void setName(DtString name);
5109  virtual const DtString name() const;
5110 
5111  virtual void setFromString(const char *str);
5112  virtual const char *string() const;
5113 
5114  virtual void printData() const;
5115 };
5116 
5118 {
5119 public:
5120  DtSdcLayerPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
5121  DtSdcLayerPdu(const DtNetViewControlPdu *initial,
5122  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
5123 };
5125 {
5126 public:
5127 
5128  DtSdcLayerPduV0(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
5129  DtSdcLayerPduV0(const DtNetViewControlPdu *initial,
5130  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0);
5131 
5132 };
5133 
5142 {
5143 public:
5148  typedef enum
5149  {
5153  DtSdcSegmentStyleLightning
5154  } DtSdcSegmentStyle;
5155 
5160  typedef enum
5161  {
5169  DtSdcSegmentArrowStyleArrowDouble
5170  } DtSdcSegmentArrowStyle;
5171 
5172 public:
5173  DtSdcLineSegment(double percentage, DtSdcColor color, unsigned pattern,
5174  unsigned thickness, DtSdcSegmentStyle style,
5175  DtSdcSegmentArrowStyle arrowStyle);
5176 
5177  DtSdcLineSegment();
5178 
5179  DtSdcLineSegment( const DtSdcLineSegment& orig );
5180 
5181  DtSdcLineSegment operator=( const DtSdcLineSegment& orig );
5182 
5183  const DtSdcColor& color() const;
5184  void setColor( const DtSdcColor& color );
5185 
5186  unsigned pattern() const;
5187  void setPattern( unsigned pattern );
5188 
5189  unsigned thickness() const;
5190  void setThickness( unsigned thickness );
5191 
5192  double percentage() const;
5193  void setPercentage ( double percentage );
5194 
5195  DtSdcSegmentStyle style() const;
5196  void setStyle( DtSdcSegmentStyle style );
5197 
5198  DtSdcSegmentArrowStyle arrowStyle() const;
5199  void setArrowStyle( DtSdcSegmentArrowStyle arrowStyle );
5200 
5201 protected:
5203  unsigned myPattern;
5204  unsigned myThickness;
5208 };
5209 
5218 {
5219 public:
5225  virtual int numSegments() const = 0;
5226 
5232  virtual void setNumSegments(int numSegments) = 0;
5233 
5241  virtual DtSdcLineSegment::DtSdcSegmentStyle lineStyle(int segment=0) const = 0;
5242 
5250  virtual void setLineStyle(DtSdcLineSegment::DtSdcSegmentStyle lineStyle,
5251  int segment=0) = 0;
5252 
5261  virtual DtSdcLineSegment::DtSdcSegmentArrowStyle arrowStyle(int segment=0)
5262  const = 0;
5263 
5271  virtual void setArrowStyle(DtSdcLineSegment::DtSdcSegmentArrowStyle arrowStyle,
5272  int segment=0) = 0;
5273 
5281  virtual unsigned pattern(int segment=0) const = 0;
5282 
5290  virtual void setPattern(unsigned pattern, int segment=0) = 0;
5291 
5299  virtual unsigned thickness(int segment=0) const = 0;
5300 
5310  virtual void setThickness(unsigned thickness, int segment=0) = 0;
5311 
5319  virtual double percentage(int segment) const = 0;
5320 
5330  virtual void setPercentage(double percentage, int segment) = 0;
5331 };
5332 
5333 
5342 {
5343 public:
5378  DtSdcLine2DObject( DtExerciseConn* exConn, unsigned id, const DtSdcVector2D& startPosition,
5379  const DtSdcVector2D& endPosition, int numSegments=1,
5385  unsigned thickness=1, unsigned pattern=0xffffff, bool flashing = false );
5386 
5387  // \brief Virtual destructor
5388  virtual ~DtSdcLine2DObject();
5389 
5390 private:
5396 
5397 public:
5403  virtual DtSdcVector2D startPosition() const;
5404 
5410  virtual void setStartPosition( const DtSdcVector2D& startPosition );
5411 
5417  virtual DtSdcVector2D endPosition() const;
5418 
5424  virtual void setEndPosition( const DtSdcVector2D& endPosition );
5425 
5431  virtual int numSegments() const;
5432 
5438  virtual void setNumSegments( int numSegments );
5439 
5447  virtual const DtSdcColor& color( int segment ) const;
5448  virtual const DtSdcColor& color() const;
5449 
5457  virtual void setColor ( const DtSdcColor& color, int segment );
5458  virtual void setColor ( const DtSdcColor& color);
5459 
5467  virtual DtSdcLineSegment::DtSdcSegmentStyle lineStyle( int segment=0 ) const;
5468 
5476  virtual void setLineStyle( DtSdcLineSegment::DtSdcSegmentStyle lineStyle,
5477  int segment=0 );
5478 
5487  virtual DtSdcLineSegment::DtSdcSegmentArrowStyle arrowStyle( int segment=0 )
5488  const;
5489 
5498  int segment=0 );
5499 
5507  virtual unsigned pattern( int segment=0 ) const;
5508 
5516  virtual void setPattern( unsigned pattern, int segment=0 );
5517 
5525  virtual unsigned thickness( int segment=0 ) const;
5526 
5536  virtual void setThickness( unsigned thickness, int segment=0 );
5537 
5545  virtual double percentage( int segment ) const;
5546 
5556  virtual void setPercentage( double percentage, int segment );
5557 
5563  virtual bool flashing() const;
5564 
5570  virtual void setFlashing( bool flashing );
5571 
5572  virtual void setRemoteGraphicSet(const std::string& setName);
5573 
5574 
5576  virtual void update();
5577 
5578 protected:
5579  virtual void initRecords();
5580 
5584  std::vector<DtSdcLineSegment> myLineSegments;
5585 
5586  DtEnvironmentalLineRecord myLineRecord;
5588 };
5589 
5599 {
5600 public:
5644  DtSdcLine3DObject(DtExerciseConn* exConn, unsigned id, const DtSdc3DAttachPoint& startAttachment,
5645  const DtSdc3DAttachPoint& endAttachment, int numSegments=1,
5646  const DtVector32& offset = DtVector32::zero(),
5652  unsigned thickness=1, unsigned pattern=0xffffff, bool flashing = false,
5653  bool checkLos = false, bool projected = false);
5654 
5655 
5656  virtual ~DtSdcLine3DObject();
5657 
5658 private:
5664 
5668  DtSdcLine3DObject(const DtSdcLine3DObject& orig);
5669 
5674 
5675 
5676 public:
5682  virtual const DtSdc3DAttachPoint& startAttachment() const;
5683 
5689  virtual void setStartAttachment(const DtSdc3DAttachPoint& startAttachment);
5690 
5696  virtual const DtSdc3DAttachPoint& endAttachment() const;
5697 
5703  virtual void setEndAttachment(const DtSdc3DAttachPoint& endAttachment);
5704 
5711  virtual const DtVector32& offset() const;
5712 
5718  virtual void setOffset(const DtVector32& off);
5719 
5725  virtual int numSegments() const;
5726 
5732  virtual void setNumSegments(int numSegments);
5733 
5741  virtual const DtSdcColor& color(int segment) const;
5742  virtual const DtSdcColor& color() const;
5743 
5751  virtual void setColor (const DtSdcColor& color, int segment);
5752  virtual void setColor (const DtSdcColor& color);
5753 
5761  virtual DtSdcLineSegment::DtSdcSegmentStyle lineStyle(int segment=0) const;
5762 
5770  virtual void setLineStyle(DtSdcLineSegment::DtSdcSegmentStyle lineStyle,
5771  int segment=0);
5772 
5782  const;
5783 
5792  int segment=0);
5793 
5801  virtual unsigned pattern(int segment=0) const;
5802 
5810  virtual void setPattern(unsigned pattern, int segment=0);
5811 
5819  virtual unsigned thickness(int segment=0) const;
5820 
5830  virtual void setThickness(unsigned thickness, int segment=0);
5831 
5839  virtual double percentage(int segment) const;
5840 
5850  virtual void setPercentage(double percentage, int segment);
5851 
5857  virtual bool flashing() const;
5858 
5864  virtual void setFlashing(bool flashing);
5865 
5872  virtual bool checkLos() const;
5873 
5880  virtual void setCheckLos(bool checkLos);
5881 
5888  virtual bool projected() const;
5889 
5896  virtual void setProjected (bool projected );
5897 
5898  virtual void setRemoteGraphicSet(const std::string& setName);
5899 
5908  virtual void update();
5909 
5910 protected:
5911  void initRecords();
5912 
5913 protected:
5916  DtVector32 myOffset;
5920  std::vector<DtSdcLineSegment> myLineSegments;
5921 
5922  DtEnvironmentalLineRecord myLineRecord;
5924 };
5925 
5926 
5927 /*
5928  2DLine
5929  3DLine
5930  2DSegmentedLine (for back compatibility)
5931  3DSegmentedLine (for back compatibility)
5932 */
5934 {
5935 public:
5937 
5938 public:
5939  typedef enum
5940  {
5941  DtSdcStyleNoArrow =0x00,
5942  DtSdcStyleArrowEnd =0x01,
5943  DtSdcStyleArrowStart =0x02,
5944  DtSdcStyleArrowDouble =0x03,
5945  DtSdcLineArrowStyleEntry =0x03
5946  } DtSdcLineArrowStyle;
5947 
5948  typedef enum
5949  {
5950  DtSdcLineAppearanceStraight =0x00,
5951  DtSdcLineAppearanceLightning =0x08,
5952  DtSdcLineAppearanceEntry =0x08
5953  } DtSdcLineAppearance;
5954 
5955 public:
5956 
5957  DtSdcLinePdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
5958  DtSdcLinePdu( const DtNetViewControlPdu* initial,
5959  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
5960 
5961  // Trick to prevent default constructor being called; used
5962  // by DtSdcLinePduV0 and DtSdcSegmentedLinePduV0
5963  DtSdcLinePdu( double doNothing );
5964 
5965  virtual void setNumSegments( DtNetU8 segments );
5966  virtual const DtNetU8 numSegments() const;
5967 
5968  virtual void setArrowStyle( DtSdcLineArrowStyle style );
5969  virtual void setArrowStyle( unsigned int segment, DtSdcLineArrowStyle style );
5970  virtual const DtSdcLineArrowStyle arrowStyle( unsigned int segment=0 ) const;
5971 
5972  virtual void setAppearance( DtSdcLineAppearance app );
5973  virtual void setAppearance( unsigned int segment, DtSdcLineAppearance app );
5974  virtual const DtSdcLineAppearance appearance( unsigned int segment=0 ) const;
5975 
5976  virtual void setThickness( DtNetU8 thickness );
5977  virtual void setThickness( unsigned int segment, DtNetU8 thickness );
5978  virtual const DtNetU8 thickness( unsigned int segment=0 ) const;
5979 
5980  virtual void setPattern( DtNetU32 patt );
5981  virtual void setPattern( unsigned int segment, DtNetU32 patt );
5982  virtual const DtNetU32 pattern( unsigned int segment=0 ) const;
5983 
5984  virtual void setColor( DtNetU8 color[4] );
5985  virtual void setColor( unsigned int segment, DtNetU8 color[4] );
5986 
5987  virtual const DtNetU8* color() const;
5988  virtual const DtNetU8* color( unsigned int segment ) const;
5989 
5990  virtual void setPercentage( unsigned int segment, DtNetU8 percent );
5991  virtual const DtNetU8 percentage( unsigned int segment=0 ) const;
5992 
5994  virtual void setCheckLos( bool checkLos );
5995  virtual bool checkLos() const;
5996 
6000  virtual void setProjected( bool projected );
6001  virtual bool projected() const;
6002 
6003  virtual void printData() const;
6004 
6005 protected:
6006  virtual const char* typeString( DtSdcLinePdu::DtSdcLineArrowStyle param ) const;
6007  virtual const char* typeString( DtSdcLinePdu::DtSdcLineAppearance param ) const;
6008 };
6009 
6011 {
6012 public:
6013 
6014  DtSdcLinePduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6015  DtSdcLinePduV0( const DtNetViewControlPdu* initial,
6016  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6017 };
6018 
6020 {
6021 public:
6022 
6023  DtSdcSegmentedLinePduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6025  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6026 };
6027 
6028 /*
6029  DtSdcCircle
6030  DtSdcSphere
6031  DtSdcSquare
6032  DtSdcCube
6033  DtSdcCylinder
6034 */
6035 
6037 {
6038 public:
6039 
6040  typedef enum
6041  {
6042  DtSdcFillAreaOff =0x00,
6043  DtSdcFillAreaOn =0x40,
6044  DtSdcFillAreaEntry =0x40
6045  } DtSdcFillArea;
6046 
6047 public:
6048  virtual void setFill( bool onOff ) const;
6049  virtual bool fill() const;
6050 
6051  virtual void setPattern( DtNetU32 patt );
6052  virtual const DtNetU32 pattern() const;
6053 
6054  virtual void setScale( const DtVector &pos );
6055  virtual DtVector scale() const;
6056 
6057  virtual void setRotation( const DtTaitBryan &tait );
6058  virtual DtTaitBryan rotation() const;
6059 
6060  virtual void setFromString( const char* str );
6061  virtual const char* string() const;
6062 
6063  virtual void printData() const;
6064 
6065 };
6066 
6068 {
6069 public:
6070  DtSdcPolyObjectPdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6071  DtSdcPolyObjectPdu( const DtNetViewControlPdu* initial,
6072  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6073 };
6074 
6076 {
6077 public:
6078  DtSdcPolyObjectPduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6079  DtSdcPolyObjectPduV0( const DtNetViewControlPdu* initial,
6080  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6081 };
6082 
6090 {
6091 public:
6115  DtSdcRectangleObject(DtExerciseConn* exConn, unsigned id, const DtSdcVector2D& position,
6116  const DtSdcVector2D& size, double rotation = 0.0, double scale = 1.0,
6117  DtSdcColor color = DtSdcColor::DtSdcWhite, bool fill = false,
6118  unsigned pattern = 0xffffffff, bool flashing = false );
6119 
6120  // \brief Virtual destructor
6121  virtual ~DtSdcRectangleObject();
6122 
6123 private:
6129 
6130 };
6131 
6132 class DtExerciseConn;
6135 
6136 typedef std::map<unsigned, DtSdcObject*> DtSdcObjectList;
6137 
6138 #if DtDIS
6139  class DtInetSocket;
6140 #endif
6141 
6153 {
6154 public:
6166  DtStealthRemoteDrawer(DtExerciseConn* exConn,
6167  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6168  unsigned nextId = 0);
6169 
6188  const DtGlobalObjectDesignator& senderId,
6189  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6190  unsigned nextId = 0);
6191 
6192 #if DtHLA
6193 
6194 
6195 
6196 
6197 
6198 
6199 
6200 
6201 
6202 
6203 
6204 
6205 
6206 
6207 
6208 
6209 
6210 
6211 
6212 
6213 
6214 
6215 
6216  DtStealthRemoteDrawer(const char* execName, const char* federateType,
6217  DtFomMapper* mapper = DtRprFomMapper::create(NULL),
6218  const char* fedFileName = NULL,
6219  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6220  unsigned nextId = 0);
6221 
6244  DtStealthRemoteDrawer(const char* execName, const char* federateType,
6245  const char* dsoName, const char* fedFileName = NULL,
6246  void* fomMapInitData = NULL,
6247  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6248  unsigned nextId = 0);
6249 #endif
6250 
6251 #if DtDIS
6252 
6253 
6254 
6255 
6256 
6257 
6258 
6259 
6260 
6261 
6262 
6263 
6264 
6265 
6266 
6267 
6268 
6269 
6270  DtStealthRemoteDrawer(int port, int exerciseId,
6271  int siteId, int applicationNum,
6272  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6273  unsigned nextId = 0);
6274 
6297  DtStealthRemoteDrawer(int port, const DtInetAddr& destAddr, int exerciseId,
6298  int siteId, int applicationNum,
6299  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6300  unsigned nextId = 0);
6301 
6321  DtStealthRemoteDrawer(DtInetSocket *skt, int exerciseId,
6322  int siteId, int applicationNum,
6323  const DtGlobalObjectDesignator& targetStealthId = SEND_TO_ALL,
6324  unsigned nextId = 0);
6325 #endif
6326 
6327 private:
6333 
6338 
6343  DtStealthRemoteDrawer& operator=(const DtStealthRemoteDrawer&);
6344 
6345 public:
6351  virtual ~DtStealthRemoteDrawer();
6352 
6353 public:
6354 
6359  virtual unsigned nextId();
6360 
6375  virtual void add(DtSdcObject* object);
6376 
6387  virtual void addToLayer(unsigned id, unsigned layerId);
6388 
6389 
6396  virtual DtSdcObject* remove(unsigned id);
6397 
6408  virtual void removeFromLayer(unsigned id, unsigned layerId );
6409 
6418  virtual DtSdcObject* lookup(unsigned id);
6419 
6429  virtual void update(unsigned id);
6430 
6437  virtual void show(unsigned id);
6438 
6451  virtual void showAttribute(unsigned groupId, unsigned attributeId);
6452 
6459  virtual void hide(unsigned id);
6460 
6473  virtual void hideAttribute(unsigned groupId, unsigned attributeId);
6474 
6475 public:
6477  static const DtGlobalObjectDesignator SEND_TO_ALL;
6478 
6479 protected:
6480  virtual void update(DtSdcObject* object);
6481 
6482 
6483 protected:
6484  DtExerciseConn* myExConn;
6486 
6487  unsigned myNextId;
6488  DtSdcObjectList myObjectList;
6490  DtGlobalObjectDesignator myTargetId;
6491  DtGlobalObjectDesignator mySenderId;
6492 
6493 #if DtHLA
6494  DtStealthControlInteraction mySendInter;
6495 #endif
6496 
6497 };
6498 
6505 {
6506 public:
6521  DtSdcText2DObject(DtExerciseConn* exConn, unsigned id, const DtString& text,
6523  bool flashing = false );
6524 
6525  // \brief Virtual destructor
6526  virtual ~DtSdcText2DObject();
6527 
6528 private:
6534 
6535 public:
6541  virtual DtString text() const;
6542 
6548  virtual void setText( const DtString& text );
6549 
6555  virtual DtSdcVector2D position() const;
6556 
6562  virtual void setPosition( const DtSdcVector2D& position );
6563 
6569  virtual const DtSdcColor& color() const;
6570 
6576  virtual void setColor (const DtSdcColor& color );
6577 
6583  virtual bool flashing() const;
6584 
6590  virtual void setFlashing( bool flashing );
6591 
6595  virtual void setFont(const char* fontFile, float size);
6596 
6597  virtual void setRemoteGraphicSet(const std::string& setName);
6598 
6607  virtual void update();
6608 
6609 protected:
6613  DtString myText;
6614 
6616 };
6617 
6624 {
6625 public:
6643  DtSdcText3DObject(DtExerciseConn* exConn, unsigned id, const DtString& text,
6645  const DtVector32& enuOffset = DtVector32::zero(),
6646  DtSdcColor color = DtSdcColor::DtSdcWhite, bool flashing = false);
6647 
6648  // \brief Virtual destructor
6649  virtual ~DtSdcText3DObject();
6650 
6651 private:
6657 
6661  DtSdcText3DObject(const DtSdcText3DObject& orig);
6662 
6667 
6668 public:
6674  virtual const DtString& text() const;
6675 
6681  virtual void setText(const DtString& text);
6682 
6689  virtual const DtSdc3DAttachPoint& attachment() const;
6690 
6695  virtual void setAttachment(const DtSdc3DAttachPoint& attachment);
6696 
6703  virtual const DtVector32& offset() const;
6704 
6710  virtual void setOffset(const DtVector32& off);
6711 
6717  virtual const DtSdcColor& color() const;
6718 
6724  virtual void setColor (const DtSdcColor& color);
6725 
6731  virtual bool flashing() const;
6732 
6738  virtual void setFlashing(bool flashing);
6739 
6740  virtual void setRemoteGraphicSet(const std::string& setName);
6741 
6750  virtual void update();
6751 
6752 protected:
6753  void initRecords();
6754 
6755 protected:
6757  DtVector32 myOffset;
6760  DtString myText;
6761 
6762  DtEnvironmentalPointRecord myPointRecord;
6764 };
6765 
6766 /*
6767  Use this pdu to send 2DText and 3DText:
6768  type:
6769 
6770  DtSdc2DText place the text on the overlay.
6771  DtSdc3DText place the text on the scene.
6772  Use setType to specify the command you want to send.
6773 */
6775 {
6776 public:
6777  virtual void setText( DtString s );
6778  virtual const DtString text() const;
6779 
6780  virtual void setFromString( const char* );
6781  virtual const char* string() const;
6782 
6783  virtual void printData() const;
6784 };
6785 
6786 
6788 {
6789 public:
6790  DtSdcTextPdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6791  DtSdcTextPdu( const DtNetViewControlPdu* initial,
6792  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6793 };
6794 
6796 {
6797 public:
6798  DtSdcTextPduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
6799  DtSdcTextPduV0( const DtNetViewControlPdu* initial,
6800  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
6801 };
6802 
6809 {
6810 public:
6845  DtSdcTriangle2DObject(DtExerciseConn* exConn, unsigned id, const DtSdcVector2D& vertex1,
6846  const DtSdcVector2D& vertex2, const DtSdcVector2D& vertex3,
6849  double rotation = 0.0, DtSdcColor color = DtSdcColor::DtSdcWhite,
6850  bool fill = false, unsigned pattern = 0xffffffff, bool flashing = false );
6851 
6857 
6860 
6861  // \brief Virtual destructor
6862  virtual ~DtSdcTriangle2DObject();
6863 
6864 private:
6870 
6871 public:
6877  virtual DtSdcVector2D vertex1() const;
6878 
6884  virtual void setVertex1( const DtSdcVector2D& vertex );
6885 
6891  virtual DtSdcVector2D vertex2() const;
6892 
6898  virtual void setVertex2( const DtSdcVector2D& vertex );
6899 
6905  virtual DtSdcVector2D vertex3() const;
6906 
6912  virtual void setVertex3( const DtSdcVector2D& vertex );
6913 
6919  virtual DtSdcVector2D offset() const;
6920 
6926  virtual void setOffset( const DtSdcVector2D& offset );
6927 
6933  virtual DtSdcVector2D scale() const;
6934 
6940  virtual void setScale( const DtSdcVector2D& scale );
6941 
6947  virtual double rotation() const;
6948 
6954  virtual void setRotation( double rotation );
6955 
6961  virtual const DtSdcColor& color() const;
6962 
6968  virtual void setColor (const DtSdcColor& color );
6969 
6976  virtual bool fill() const;
6977 
6984  virtual void setFill( bool fill );
6985 
6991  virtual unsigned pattern() const;
6992 
7000  virtual void setPattern( unsigned pattern );
7001 
7007  virtual bool flashing() const;
7008 
7014  virtual void setFlashing( bool flashing );
7015 
7016  virtual void setRemoteGraphicSet(const std::string& setName);
7017 
7026  virtual void update();
7027 
7028 protected:
7029 
7030  virtual DtSdcVector2D transformVertex(const DtSdcVector2D& v, const DtSdcVector2D& center) const;
7031  virtual void transformVertices();
7032 
7038 
7040  unsigned myPattern;
7041  bool myFill;
7042  double myRotation;
7044 
7046 };
7047 
7054 {
7055 public:
7071  DtSdcTriangle3DObject(DtExerciseConn* exConn, unsigned id, const DtVector& vertex1,
7072  const DtVector& vertex2, const DtVector& vertex3,
7073  DtVector32 offset = DtVector32::zero(),
7075  const DtString& textureDirectory = "",
7076  const DtString& textureFilename = DtString::nullString(),
7077  int numTextureTiles = 0, bool flashing = false);
7078 
7079 
7080  // \brief Virtual destructor
7081  virtual ~DtSdcTriangle3DObject();
7082 
7083 private:
7089 
7094 
7099 
7100 public:
7106  virtual const DtVector& vertex1() const;
7107 
7113  virtual void setVertex1(const DtVector& vertex1);
7114 
7120  virtual const DtVector& vertex2() const;
7121 
7127  virtual void setVertex2(const DtVector& vertex2);
7128 
7134  virtual const DtVector& vertex3() const;
7135 
7141  virtual void setVertex3(const DtVector& vertex3);
7142 };
7143 
7144 /*
7145  DtSdc2DTriangle
7146  DtSdc3DTriangle
7147 */
7149 {
7150 public:
7151  virtual void setPoint( int index, const DtVector &pos );
7152  virtual const DtVector point( int index ) const;
7153 
7154  virtual void setFromString(const char* str);
7155  virtual const char* string() const;
7156 
7157  virtual void printData() const;
7158 };
7159 
7160 
7162 {
7163 public:
7164 
7165  DtSdcTrianglePdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
7166  DtSdcTrianglePdu(const DtNetViewControlPdu* initial,
7167  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
7168 };
7169 
7171 {
7172 public:
7173 
7174  DtSdcTrianglePduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
7175  DtSdcTrianglePduV0(const DtNetViewControlPdu* initial,
7176  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
7177 };
7178 
7180 {
7181 public:
7182 
7183  virtual void setNumPoints( int nPoints );
7184  virtual const int numPoints() const;
7185 
7186  virtual void setPoint( int index, const DtVector &pos );
7187  virtual const DtVector point( int index ) const;
7188 
7189  virtual void setTextureDirectory(const DtString& str);
7190  virtual const DtString textureDirectory() const;
7191 
7192  virtual void setTextureFilename(const DtString& str);
7193  virtual const DtString textureFilename() const;
7194 
7195  virtual void setNumTextureTiles( int numTextureTiles );
7196  virtual const int numTextureTiles() const;
7197 
7198  virtual void setFromString(const char* str);
7199  virtual const char* string() const;
7200 
7201  virtual void printData() const;
7202 
7203 };
7204 
7205 
7207 {
7208 public:
7209 
7210  DtSdcAreaPdu( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
7211  DtSdcAreaPdu(const DtNetViewControlPdu* initial,
7212  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
7213 };
7214 
7216 {
7217 public:
7218 
7219  DtSdcAreaPduV0( DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER );
7220  DtSdcAreaPduV0(const DtNetViewControlPdu* initial,
7221  DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER, DtPduFactory* pduFactory = 0 );
7222 };
7223 


Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)