VR-Forces 4.1.1 Class Documentation
vrfObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2001 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
12 
13 
14 #include "vrfobjcore/objFactory.h"
19 #include "geometry/tdbextent.h"
20 
21 #include "vrfutil/rdrWritr.h"
22 #include "vrfutil/rwString.h"
23 #include "vrfutil/rwObjType.h"
24 #include "vrfutil/rwBoolean.h"
25 #include "vrfutil/lclVtxList.h"
26 #include "vrfutil/rwVector.h"
27 #include "vrfutil/callbackList.h"
28 
30 #include <vl/hostStructs.h>
31 #include <vlpi/appearance.h>
32 #include <vlutil/vlList.h>
33 
37 class DtStateRepository;
41 class DtVrfObjectMessage;
42 class DtVrfObjectManager;
43 class DtSimManager;
45 class DtSimTaskManager;
46 class DtSimBaseRadio;
52 class DtReflectedEntity;
54 class DtReflectedEnvironmentProcess;
55 class DtVrfObject;
58 class Coordinate_System;
59 class DtAttachedTerrain;
60 class DtPhysicalWorld;
61 class DtObjectConsole;
62 class DtSetDataManager;
65 class DtSettingsObject;
67 
70 typedef void (*DtVrfObjectCallbackFunction)(DtVrfObject* obj, void* userData);
71 
73 
88 {
89 public:
90 
94  typedef std::pair<DtVrfObjectCallbackFunction, void*> DtVrfObjectCallbackDataPair;
95  typedef std::pair<DtVrfObject*, DtVrfObjectCallbackDataPair> DtVrfObjectCallbackDataPair2;
97  typedef std::list<DtLuaScriptInterfaceExtension::CreatorUserPair> ScriptInterfaceExtensions;
98 
99 protected:
100 
102  DtVrfObject();
103 
104 public:
105 
106  DtVrfObject(
107  const DtObjectType & objectType,
108  DtVrfObjectManager* vrfObjectManager,
109  bool createLocalObject = true,
110  bool publishLocalObject = true,
111  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
112  const DtGlobalObjectDesignator* globalId = 0,
113  DtReflectedObject* reflectedObject = 0,
114  const DtString & objectName = DtString::nullString(),
115  const DtString & objectLabel = DtString::nullString(),
116  DtForceType forceType = DtForceOther,
117  const DtList* vertices = 0,
118  const DtTaitBryan* orientation = 0,
119  bool projection = false,
120  bool closedFigure = false,
121  const DtAppearance& appearance = DtAppearance::nullAppearance(),
122  const DtString & readerWriterName = "vrf-object",
123  DtReaderWriterRegistry* parentRegistry = 0);
124 
126  virtual ~DtVrfObject();
127 
130  virtual bool create();
133  virtual void createCommunicationsInterface();
134 
137  virtual void createCommunicationsInterface(const DtRadioDescriptorList& descList);
138 
141  virtual void createSetDataManager();
142 
145  virtual bool init();
146 
148 
152  virtual void tick();
157  virtual bool createRepository(DtVrfObjectParameters* parameterEntry);
158  virtual bool createTaskManager();
159  virtual bool createComponentManager();
162  virtual bool createVrfObjectPlanManager();
163  virtual bool createRadio();
164 
166  virtual const DtSimManager* simManager() const;
167  virtual DtSimManager* simManager();
168 
170  virtual DtSimTaskManager* taskManager() const;
171  virtual DtSimComponentManager* componentManager() const;
172  virtual DtVrfObjectPlanManager* vrfObjectPlanManager() const;
173  virtual DtSimBaseRadio* radio() const;
174 
175  virtual DtVrfObjectStateRepository* vrfState() const;
176 
185  virtual DtExtent extent() const;
186 
191  virtual void expandExtent(DtExtent& extent) const;
192 
196  virtual void sendVrfObjectCreated(unsigned long requestId = 0);
197 
199  virtual void setupFromMessageContent(DtIfModifyVrfObject* ifModVrfObject);
200 
203  virtual bool isVrfSimulatedObject();
204  virtual void setIsVrfSimulatedObject(bool b);
205 
213  virtual bool isSimulatingComponents() const;
214 
216  virtual void putSelf(FILE* fp, int indentLevel = 0, bool writeUnspecified = true,
217  const DtFilename& path = DtReaderWriter::appPath());
218 
220  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
221  const DtVariableBindingsList& variableBindings);
222 
230  virtual bool setObjectName(const DtString & name, bool rename = true);
231 
234  virtual void addNameAlias(const DtString& name);
235 
238  virtual void unregisterAliases();
239 
253  virtual void addVrfObjectChangedCallback(
254  DtVrfObjectCallbackFunction function, void* userData);
255  virtual void removeVrfObjectChangedCallback(
256  DtVrfObjectCallbackFunction function, void* userData);
257 
264  virtual void addVerticesChangedCallback(
265  DtVrfObjectCallbackFunction function, void* userData);
266  virtual void removeVerticesChangedCallback(
267  DtVrfObjectCallbackFunction function, void* userData);
269 
275  virtual void addRelativeVerticesChangedCallback(
276  DtVrfObjectCallbackFunction function, void* userData);
277  virtual void removeRelativeVerticesChangedCallback(
278  DtVrfObjectCallbackFunction function, void* userData);
280 
283  virtual void addVrfObjectPredicateCallback(
285  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
286  void* userData = 0);
287  virtual void removeVrfObjectPredicateCallback(
289  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
290  void* userData = 0);
291 
294  virtual int predicateCallbackCount() const;
295 
300  virtual void invokeVrfObjectPredicateCallbacks();
301 
304  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
305 
306  virtual const DtVrfObjectManager* simObjectManager() const;
307  virtual DtVrfObjectManager* simObjectManager();
308  virtual void setSimObjectManager(DtVrfObjectManager* simObjectManager);
309 
310  virtual bool createNetInterface();
311 
316  virtual void setGlobalId(const DtGlobalObjectDesignator & id);
317  virtual const DtGlobalObjectDesignator & globalId() const;
318 
323  virtual bool baseSetObjectName(const DtString & name);
324  virtual const DtString & objectName() const;
325 
327  virtual const DtString & objectLabel() const;
328  virtual void setObjectLabel(const DtString & objectLabel);
329 
331  virtual const DtString & overlayParent() const;
332  virtual void setOverlayParent(const DtString & overlayParent);
333 
335  virtual DtStateRepository* netState();
336  virtual const DtStateRepository* netState() const;
337 
339  virtual DtSimObjectNetInterface* netInterface();
340  virtual const DtSimObjectNetInterface* netInterface() const;
341  virtual void setNetInterface(DtSimObjectNetInterface* netInterface);
342 
344  virtual void setObjectIdentifier(const DtEntityIdentifier & objectId);
345  virtual const DtEntityIdentifier & objectIdentifier() const;
346 
349  virtual bool isLocal() const;
350 
354 
355  virtual void setPublishObject(bool publishObject);
356  virtual bool publishObject() const;
358 
360  virtual DtString type() const;
361 
362  virtual DtString objectClassType() const;
363  virtual void setObjectClassType(const DtString & objectClassType);
364 
367  virtual void clearVerticesChangedCallbacks();
368 
371  virtual void clearRelativeVerticesChangedCallbacks();
372 
375  virtual void clearPredicateCallbacks();
376 
377  static void addSimObjectCreatorFcn(const DtString & type,
379 
384  static DtSimObjectFactory* factory();
385  static void setFactory(DtSimObjectFactory* factory);
386 
387  virtual DtSimObjectStateRepository* simState();
388  virtual const DtSimObjectStateRepository* simState() const;
389  virtual void setSimState(DtVrfObjectStateRepository* simState);
390 
391  void setEntityType(const DtEntityType & entityType);
392  const DtEntityType & entityType() const;
393 
394  void setDestroyed(bool destroyed);
395  bool isDestroyed() const;
396 
408  virtual void place(const DtVector& location, bool* dataAvailable = 0,
409  bool requireAllData = false);
410 
422  virtual void place(const DtReal heading, bool* dataAvailable = 0,
423  bool requireAllData = false);
424 
437  virtual void place(const DtVector& location, const DtReal heading,
438  bool* dataAvailable = 0, bool requireAllData = false);
439 
440  const DtString & echelonIdString() const;
441 
442  virtual DtVrfObject* leadEntity() const;
443 
444  virtual const DtString& firstSubordinate() const;
445 
446  virtual const DtString& lastSubordinate() const;
447 
449  virtual const DtString& firstHealthySubordinate() const;
450 
451  virtual void echelonIdChanged() {}
452 
453  virtual const DtObjectId & objectId() const;
454  virtual const DtObjectType& objectType() const;
455 
457  virtual bool isEmbarked() const;
458 
461  virtual bool isEmbarkedOn(const DtString& parent) const;
462 
463  DtAttachedTerrain* terrainAttachedTo();
464  const DtAttachedTerrain* terrainAttachedTo() const;
465 
466  virtual const DtPhysicalWorld* physicalWorld() const;
467  virtual DtPhysicalWorld* physicalWorld();
468 
470  void setAboutToBeRemoved(bool);
471  bool aboutToBeRemoved() const;
472 
475  virtual DtOutputStream& objectConsoleDebug() const;
476  virtual DtOutputStream& objectConsoleVerbose() const;
477  virtual DtOutputStream& objectConsoleInfo() const;
478  virtual DtOutputStream& objectConsoleWarn() const;
479  virtual DtOutputStream& objectConsoleError() const;
481 
484  virtual DtObjectConsole* objectConsole();
485  virtual const DtObjectConsole* objectConsole() const;
487 
492  virtual DtSetDataManager* setDataManager();
493 
498  virtual DtVrfObjectCommunicationInterface* communicationInterface();
499 
503  virtual DtVrfObjectTerrainPreloadManager* terrainPreloadManager();
504 
507  DtVrfObjectSubComponentTypes* vrfSubComponentTypes() const;
508 
511  virtual bool hasPlan() const;
512 
514  virtual bool executingPlan() const;
515 
517  virtual bool isCurrentlyTasked() const;
518 
524  virtual void addPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
525  void* usr);
526  virtual void removePostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
527  void* usr);
529 
534  virtual DtU8 getNextEmitterSystemId();
535 
537  static void setDefaultNotifyLevel(DtNotifyLevelType level);
539  static DtNotifyLevelType defaultNotifyLevel();
540 
544  virtual void addScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
546  virtual void removeScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
548  virtual const ScriptInterfaceExtensions& scriptExtensions() const;
549 
550 public:
551 
554  static DtVrfObject* creator(
555  const DtObjectType& objectType,
556  DtVrfObjectManager* simObjectManager,
557  bool createLocalObject = true,
558  bool publishLocalObject = true,
559  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
560  const DtGlobalObjectDesignator* globalId = 0,
561  DtReflectedObject* reflectedObject = 0,
562  const DtString & objectName = DtString::nullString(),
563  const DtString & objectLabel = DtString::nullString(),
564  DtForceType forceType = DtForceOther,
565  const DtList* vertices = 0,
566  const DtTaitBryan* orientation = 0,
567  bool projection = false,
568  bool closedFigure = false,
569  const DtAppearance& appearance = DtAppearance::nullAppearance(),
570  const DtString & readerWriterName = DtString::nullString(),
571  DtReaderWriterRegistry* parentRegistry = 0);
572 
574  static DtVrfObject* createObject(
575  const DtObjectType& objectType,
576  DtVrfObjectManager* vrfObjectManager,
577  const DtString & classType,
578  bool createLocalObject = true,
579  bool publishLocalObject = true,
580  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
581  const DtGlobalObjectDesignator* globalId = 0,
582  DtReflectedObject* reflectedObject = 0,
583  const DtString & objectName = DtString::nullString(),
584  const DtString & objectLabel = DtString::nullString(),
585  DtForceType forceType = DtForceOther,
586  const DtList* vertices = 0,
587  const DtTaitBryan* orientation = 0,
588  bool projection = false,
589  bool closedFigure = false,
590  const DtAppearance& appearance = DtAppearance::nullAppearance(),
591  const DtString & readerWriterName = DtString::nullString(),
592  DtReaderWriterRegistry* parentRegistry = 0);
593 
595  static DtVrfObject* createObject(
596  const DtObjectType & objectType,
597  DtVrfObjectManager* vrfObjectManager,
598  const DtString & classType,
599  bool createLocalObject = true,
600  bool publishLocalObject = true,
601  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
602  const DtGlobalObjectDesignator* globalId = 0,
603  DtReflectedObject* reflectedObject = 0,
604  const DtString & objectName = DtString::nullString(),
605  const DtString & objectLabel = DtString::nullString(),
606  DtForceType forceType = DtForceOther,
607  const DtVector& location = DtVector::zero(),
608  const DtTaitBryan* orientation = 0,
609  bool projection = false,
610  bool closedFigure = false,
611  const DtAppearance& appearance = DtAppearance::nullAppearance(),
612  const DtString & readerWriterName = DtString::nullString(),
613  DtReaderWriterRegistry* parentRegistry = 0);
614 
616  static DtVrfObject* createAndInit(
617  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream);
618 
622  static void verticesChangedCallback(DtVrfObject* obj,
623  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
624 
626  static void relativeVerticesChangedCallback(DtVrfObject* obj,
627  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
628 
632  static void postInitFromParamsCallback(DtVrfObjectStateRepository& stateRepository, void* usr);
633 
636 
637  static void readDRThresholdSettingsCallback(
638  const DtSettingsObject* settings, void* usr);
639  virtual void processReadDRThresholdSettings(const DtSettingsObject* settings);
641 
643 
644  virtual void addObjectAboutToBeRemovedCallback(
646  virtual void removeObjectAboutToBeRemovedCallback(
648  virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
650 
652 
653  virtual void addSetLocationCompleteCallback(
655  virtual void removeSetLocationCompleteCallback(
657  virtual void invokeSetLocationCompleteCallbacks();
659 
660 protected:
661 
663  DtVrfObject(const DtVrfObject& orig);
664 
666  DtVrfObject& operator=(const DtVrfObject& orig);
667 
668 
670  virtual void setupStateRepository();
671 
673  virtual void setupNetInterface();
674 
676  void emptyVertexList();
677 
679  void copyVertexList(const DtList& orig);
680 
683  virtual void validateObjectType();
684 
686  virtual void processPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn, void* usr);
687 
690  virtual void initializeCommunicationInterfaceCallbacks();
691  static void setOverlayLayerTaskCallback(const DtVrfObjectMessage* msg, void* usr);
692  virtual void processSetOverlayLayerTask(const DtVrfObjectMessage* msg);
693 
694 protected:
695 
697 
699 
700  DtEntityIdentifier myObjectIdentifier;
701 
704 
708 
709  DtGlobalObjectDesignator myGlobalId;
710 
712 
714 
716 
718 
723 
727 
730  DtReflectedObject* myReflectedObject;
731  DtForceType myForceType;
732  DtList myVertices;
733  DtTaitBryan myOrientation;
736  DtAppearance myAppearance;
737 
740 
742 
747 
757 
764 
768 
772 
775 
777 
780 
782 
784 
786 
788 
790 
792 
794 };
795 
797 {
798  myAboutToBeRemoved = b;
799 }
800 
801 inline bool DtVrfObject::aboutToBeRemoved() const
802 {
803  return myAboutToBeRemoved;
804 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)