VR-Forces 4.2 Class Documentation
vrfObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
12 #include "vrfobjcore/objFactory.h"
17 #include "geometry/tdbextent.h"
18 
19 #include "vrfutil/rdrWritr.h"
20 #include "vrfutil/rwString.h"
21 #include "vrfutil/rwObjType.h"
22 #include "vrfutil/rwBoolean.h"
23 #include "vrfutil/lclVtxList.h"
24 #include "vrfutil/rwVector.h"
25 #include "vrfutil/callbackList.h"
26 
28 #include <vl/hostStructs.h>
29 #include <vlpi/appearance.h>
30 #include <vlutil/vlList.h>
31 
36 class DtStateRepository;
40 class DtVrfObjectMessage;
41 class DtVrfObjectManager;
42 class DtSimManager;
44 class DtSimTaskManager;
45 class DtSimBaseRadio;
51 class DtReflectedEntity;
52 class DtReflectedExtAggregate;
53 class DtReflectedEnvironmentProcess;
54 class DtVrfObject;
57 class Coordinate_System;
58 class DtAttachedTerrain;
59 class DtPhysicalWorld;
60 class DtObjectConsole;
61 class DtSetDataManager;
64 class DtSettingsObject;
67 
70 typedef void (*DtVrfObjectCallbackFunction)(DtVrfObject* obj, void* userData);
71 
73 
90 {
91 public:
92 
96  typedef std::pair<DtVrfObjectCallbackFunction, void*> DtVrfObjectCallbackDataPair;
97  typedef std::pair<DtVrfObject*, DtVrfObjectCallbackDataPair> DtVrfObjectCallbackDataPair2;
99  typedef std::list<DtLuaScriptInterfaceExtension::CreatorUserPair> ScriptInterfaceExtensions;
100 
101 protected:
102 
104  DtVrfObject();
105 
106 public:
107 
108  DtVrfObject(
109  const DtObjectType & objectType,
110  DtVrfObjectManager* vrfObjectManager,
111  bool createLocalObject = true,
112  bool publishLocalObject = true,
113  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
114  const DtGlobalObjectDesignator* globalId = 0,
115  DtReflectedObject* reflectedObject = 0,
116  const DtString & objectName = DtString::nullString(),
117  const DtString & objectLabel = DtString::nullString(),
118  DtForceType forceType = DtForceOther,
119  const DtList* vertices = 0,
120  const DtTaitBryan* orientation = 0,
121  bool projection = false,
122  bool closedFigure = false,
123  const DtAppearance& appearance = DtAppearance::nullAppearance(),
124  const DtString & readerWriterName = "vrf-object",
125  DtReaderWriterRegistry* parentRegistry = 0);
126 
128  virtual ~DtVrfObject();
129 
132  virtual bool create();
135  virtual void createCommunicationsInterface();
136 
139  virtual void createCommunicationsInterface(const DtRadioDescriptorList& descList);
140 
143  virtual void createSetDataManager();
144 
147  virtual bool init();
148 
150 
154  virtual void tick();
159  virtual bool createRepository(DtVrfObjectParameters* parameterEntry);
160  virtual bool createTaskManager();
161  virtual bool createScriptInterfaceHandler();
162  virtual bool createComponentManager();
165  virtual bool createVrfObjectPlanManager();
166  virtual bool createRadio();
167 
169  virtual const DtSimManager* simManager() const;
170  virtual DtSimManager* simManager();
171 
173  virtual DtSimTaskManager* taskManager() const;
174  virtual DtScriptInterfaceHandler* scriptInterfaceHandler() const;
175  virtual DtSimComponentManager* componentManager() const;
176  virtual DtVrfObjectPlanManager* vrfObjectPlanManager() const;
177  virtual DtSimBaseRadio* radio() const;
178 
179  virtual DtVrfObjectStateRepository* vrfState() const;
180 
189  virtual DtExtent extent() const;
190 
195  virtual void expandExtent(DtExtent& extent) const;
196 
200  virtual void sendVrfObjectCreated(unsigned long requestId = 0);
201 
203  virtual void setupFromMessageContent(DtIfModifyVrfObject* ifModVrfObject);
204 
207  virtual bool isVrfSimulatedObject();
208  virtual void setIsVrfSimulatedObject(bool b);
209 
217  virtual bool isSimulatingComponents() const;
218 
220  virtual void putSelf(FILE* fp, int indentLevel = 0, bool writeUnspecified = true,
221  const DtFilename& path = DtReaderWriter::appPath());
222 
224  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
225  const DtVariableBindingsList& variableBindings);
226 
234  virtual bool setObjectName(const DtString & name, bool rename = true);
235 
238  virtual void addNameAlias(const DtString& name);
239 
242  virtual void unregisterAliases();
243 
257  virtual void addVrfObjectChangedCallback(
258  DtVrfObjectCallbackFunction function, void* userData);
259  virtual void removeVrfObjectChangedCallback(
260  DtVrfObjectCallbackFunction function, void* userData);
261 
268  virtual void addVerticesChangedCallback(
269  DtVrfObjectCallbackFunction function, void* userData);
270  virtual void removeVerticesChangedCallback(
271  DtVrfObjectCallbackFunction function, void* userData);
273 
279  virtual void addRelativeVerticesChangedCallback(
280  DtVrfObjectCallbackFunction function, void* userData);
281  virtual void removeRelativeVerticesChangedCallback(
282  DtVrfObjectCallbackFunction function, void* userData);
284 
287  virtual void addVrfObjectPredicateCallback(
289  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
290  void* userData = 0);
291  virtual void removeVrfObjectPredicateCallback(
293  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
294  void* userData = 0);
295 
298  virtual int predicateCallbackCount() const;
299 
304  virtual void invokeVrfObjectPredicateCallbacks();
305 
308  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
309 
310  virtual const DtVrfObjectManager* simObjectManager() const;
311  virtual DtVrfObjectManager* simObjectManager();
312  virtual void setSimObjectManager(DtVrfObjectManager* simObjectManager);
313 
314  virtual bool createNetInterface();
315 
320  virtual void setGlobalId(const DtGlobalObjectDesignator & id);
321  virtual const DtGlobalObjectDesignator & globalId() const;
322 
327  virtual bool baseSetObjectName(const DtString & name);
328  virtual const DtString & objectName() const;
329 
331  virtual const DtString & objectLabel() const;
332  virtual void setObjectLabel(const DtString & objectLabel);
333 
335  virtual const DtString & overlayParent() const;
336  virtual void setOverlayParent(const DtString & overlayParent);
337 
339  virtual DtStateRepository* netState();
340  virtual const DtStateRepository* netState() const;
341 
343  virtual DtSimObjectNetInterface* netInterface();
344  virtual const DtSimObjectNetInterface* netInterface() const;
345  virtual void setNetInterface(DtSimObjectNetInterface* netInterface);
346 
348  virtual void setObjectIdentifier(const DtEntityIdentifier & objectId);
349  virtual const DtEntityIdentifier & objectIdentifier() const;
350 
353  virtual bool isLocal() const;
354 
358 
359  virtual void setPublishObject(bool publishObject);
360  virtual bool publishObject() const;
362 
364  virtual DtString type() const;
365 
366  virtual DtString objectClassType() const;
367  virtual void setObjectClassType(const DtString & objectClassType);
368 
371  virtual void clearVerticesChangedCallbacks();
372 
375  virtual void clearRelativeVerticesChangedCallbacks();
376 
379  virtual void clearPredicateCallbacks();
380 
381  static void addSimObjectCreatorFcn(const DtString & type,
383 
388  static DtSimObjectFactory* factory();
389  static void setFactory(DtSimObjectFactory* factory);
390 
391  virtual DtSimObjectStateRepository* simState();
392  virtual const DtSimObjectStateRepository* simState() const;
393  virtual void setSimState(DtVrfObjectStateRepository* simState);
394 
395  void setEntityType(const DtEntityType & entityType);
396  const DtEntityType & entityType() const;
397 
398  void setDestroyed(bool destroyed);
399  bool isDestroyed() const;
400 
412  virtual void place(const DtVector& location, bool* dataAvailable = 0,
413  bool requireAllData = false);
414 
426  virtual void place(const DtReal heading, bool* dataAvailable = 0,
427  bool requireAllData = false);
428 
441  virtual void place(const DtVector& location, const DtReal heading,
442  bool* dataAvailable = 0, bool requireAllData = false);
443 
444  const DtString & echelonIdString() const;
445 
446  virtual DtVrfObject* leadEntity() const;
447 
448  virtual const DtString& firstSubordinate() const;
449 
450  virtual const DtString& lastSubordinate() const;
451 
453  virtual const DtString& firstHealthySubordinate() const;
454 
455  virtual void echelonIdChanged() {}
456 
457  virtual const DtObjectId & objectId() const;
458  virtual const DtObjectType& objectType() const;
459 
461  virtual bool isEmbarked() const;
462 
465  virtual bool isEmbarkedOn(const DtString& parent) const;
466 
467  DtAttachedTerrain* terrainAttachedTo();
468  const DtAttachedTerrain* terrainAttachedTo() const;
469 
470  virtual const DtPhysicalWorld* physicalWorld() const;
471  virtual DtPhysicalWorld* physicalWorld();
472 
474  void setAboutToBeRemoved(bool);
475  bool aboutToBeRemoved() const;
476 
479  virtual DtOutputStream& objectConsoleDebug() const;
480  virtual DtOutputStream& objectConsoleVerbose() const;
481  virtual DtOutputStream& objectConsoleInfo() const;
482  virtual DtOutputStream& objectConsoleWarn() const;
483  virtual DtOutputStream& objectConsoleError() const;
485 
488  virtual DtObjectConsole* objectConsole();
489  virtual const DtObjectConsole* objectConsole() const;
491 
496  virtual DtSetDataManager* setDataManager();
497 
502  virtual DtVrfObjectCommunicationInterface* communicationInterface();
503 
507  virtual DtVrfObjectTerrainPreloadManager* terrainPreloadManager();
508 
511  DtVrfObjectSubComponentTypes* vrfSubComponentTypes() const;
512 
515  virtual bool hasPlan() const;
516 
518  virtual bool executingPlan() const;
519 
521  virtual bool isCurrentlyTasked() const;
522 
528  virtual void addPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
529  void* usr);
530  virtual void removePostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
531  void* usr);
533 
538  virtual DtU8 getNextEmitterSystemId();
539 
541  static void setDefaultNotifyLevel(DtNotifyLevelType level);
543  static DtNotifyLevelType defaultNotifyLevel();
544 
548  virtual void addScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
550  virtual void removeScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
552  virtual const ScriptInterfaceExtensions& scriptExtensions() const;
553 
554 public:
555 
558  static DtVrfObject* creator(
559  const DtObjectType& objectType,
560  DtVrfObjectManager* simObjectManager,
561  bool createLocalObject = true,
562  bool publishLocalObject = true,
563  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
564  const DtGlobalObjectDesignator* globalId = 0,
565  DtReflectedObject* reflectedObject = 0,
566  const DtString & objectName = DtString::nullString(),
567  const DtString & objectLabel = DtString::nullString(),
568  DtForceType forceType = DtForceOther,
569  const DtList* vertices = 0,
570  const DtTaitBryan* orientation = 0,
571  bool projection = false,
572  bool closedFigure = false,
573  const DtAppearance& appearance = DtAppearance::nullAppearance(),
574  const DtString & readerWriterName = DtString::nullString(),
575  DtReaderWriterRegistry* parentRegistry = 0);
576 
578  static DtVrfObject* createObject(
579  const DtObjectType& objectType,
580  DtVrfObjectManager* vrfObjectManager,
581  const DtString & classType,
582  bool createLocalObject = true,
583  bool publishLocalObject = true,
584  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
585  const DtGlobalObjectDesignator* globalId = 0,
586  DtReflectedObject* reflectedObject = 0,
587  const DtString & objectName = DtString::nullString(),
588  const DtString & objectLabel = DtString::nullString(),
589  DtForceType forceType = DtForceOther,
590  const DtList* vertices = 0,
591  const DtTaitBryan* orientation = 0,
592  bool projection = false,
593  bool closedFigure = false,
594  const DtAppearance& appearance = DtAppearance::nullAppearance(),
595  const DtString & readerWriterName = DtString::nullString(),
596  DtReaderWriterRegistry* parentRegistry = 0);
597 
599  static DtVrfObject* createObject(
600  const DtObjectType & objectType,
601  DtVrfObjectManager* vrfObjectManager,
602  const DtString & classType,
603  bool createLocalObject = true,
604  bool publishLocalObject = true,
605  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
606  const DtGlobalObjectDesignator* globalId = 0,
607  DtReflectedObject* reflectedObject = 0,
608  const DtString & objectName = DtString::nullString(),
609  const DtString & objectLabel = DtString::nullString(),
610  DtForceType forceType = DtForceOther,
611  const DtVector& location = DtVector::zero(),
612  const DtTaitBryan* orientation = 0,
613  bool projection = false,
614  bool closedFigure = false,
615  const DtAppearance& appearance = DtAppearance::nullAppearance(),
616  const DtString & readerWriterName = DtString::nullString(),
617  DtReaderWriterRegistry* parentRegistry = 0);
618 
620  static DtVrfObject* createAndInit(
621  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream);
622 
626  static void verticesChangedCallback(DtVrfObject* obj,
627  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
628 
630  static void relativeVerticesChangedCallback(DtVrfObject* obj,
631  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
632 
636  static void postInitFromParamsCallback(DtVrfObjectStateRepository& stateRepository, void* usr);
637 
640 
641  static void readDRThresholdSettingsCallback(
642  const DtSettingsObject* settings, void* usr);
643  virtual void processReadDRThresholdSettings(const DtSettingsObject* settings);
645 
647 
648  virtual void addObjectAboutToBeRemovedCallback(
650  virtual void removeObjectAboutToBeRemovedCallback(
652  virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
654 
656 
657  virtual void addSetLocationCompleteCallback(
659  virtual void removeSetLocationCompleteCallback(
661  virtual void invokeSetLocationCompleteCallbacks();
663 
665  virtual DtVrfUnderwaterAcoustics* underwaterAcoustics();
666 
667 protected:
668 
670  DtVrfObject(const DtVrfObject& orig);
671 
673  DtVrfObject& operator=(const DtVrfObject& orig);
674 
675 
677  virtual void setupStateRepository();
678 
680  virtual void setupNetInterface();
681 
683  void emptyVertexList();
684 
686  void copyVertexList(const DtList& orig);
687 
690  virtual void validateObjectType();
691 
693  virtual void processPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn, void* usr);
694 
697  virtual void initializeCommunicationInterfaceCallbacks();
698  static void setOverlayLayerTaskCallback(const DtVrfObjectMessage* msg, void* usr);
699  virtual void processSetOverlayLayerTask(const DtVrfObjectMessage* msg);
700 
701 protected:
702 
704 
706 
707  DtEntityIdentifier myObjectIdentifier;
708 
711 
715 
716  DtGlobalObjectDesignator myGlobalId;
717 
719 
721 
723 
725 
730 
734 
737  DtReflectedObject* myReflectedObject;
738  DtForceType myForceType;
739  DtList myVertices;
740  DtTaitBryan myOrientation;
743  DtAppearance myAppearance;
744 
747 
749 
755 
765 
772 
776 
780 
783 
785 
787 
790 
792 
794 
796 
798 
800 
802 
804 };
805 
807 {
808  myAboutToBeRemoved = b;
809 }
810 
811 inline bool DtVrfObject::aboutToBeRemoved() const
812 {
813  return myAboutToBeRemoved;
814 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)