24 #include <vrvUtil/DtVirtualBaseClass.h>
25 #include <vrvCore/DtSelectionManager.h>
26 #include <vrvCore/DtEntityState.h>
27 #include <vrvUtil/signalslib.h>
28 #include <vrvCore/DtDe.h>
30 #include <vlpi/entityType.h>
31 #include <matrix/vlVector.h>
38 #include <boost/function.hpp>
57 class DtGuiThreadNetworkCallbackManager;
118 virtual void newScenario(
const DtScenario*,
int startTimeOfDay = 12 * 3600);
120 virtual void newScenario(
const DtFilename& terrainDatabase,
int startTimeOfDay = 12 * 3600);
126 virtual void importScenarioDescriptionFile(
const std::string& file, DtSimulationAddress,
const std::string& description ,
127 const std::map<std::string, std::string>& importData);
131 virtual void exportScenarioDescriptionFile(
const std::string& file, DtSimulationAddress,
const std::string& description,
132 const std::map<std::string, std::string>& importData);
151 virtual bool loadScenario(
const DtFilename&);
168 virtual void closeScenario();
175 virtual void runScenario(DtSimulationAddress addr = DtSimSendToAll);
177 virtual void pauseScenario(DtSimulationAddress addr = DtSimSendToAll);
179 virtual void rewindScenario(DtSimulationAddress addr = DtSimSendToAll);
181 virtual void exitServer(DtSimulationAddress addr = DtSimSendToAll);
183 virtual void stepScenario(DtSimulationAddress addr = DtSimSendToAll);
189 virtual void deleteObject(std::string name, DtSimulationAddress addr = DtSimSendToAll);
198 virtual void createWaypoint(
200 const std::string& uniqueName =
"",
201 const std::string& label =
"",
202 const DtSimulationAddress& addr = DtSimSendToAll,
203 unsigned int requestId = 0);
208 virtual void createWaypoint(
211 const std::string& uniqueName =
"",
212 const std::string& label =
"",
213 const DtSimulationAddress& addr = DtSimSendToAll);
216 virtual void modifyWaypoint(
217 const std::string& uniqueId,
218 std::string* uniqueName = 0,
219 std::string* label = 0,
221 const DtSimulationAddress& addr = DtSimSendToAll);
227 virtual void createRoute(
228 const std::vector<DtVector>& vertices,
229 const std::string& uniqueName =
"",
230 const std::string& label =
"",
231 const DtSimulationAddress& addr = DtSimSendToAll,
232 unsigned int rId = 0);
237 virtual void createRoute(
239 const std::vector<DtVector>& vertices,
240 const std::string& uniqueName =
"",
241 const std::string& label =
"",
242 const DtSimulationAddress& addr = DtSimSendToAll) ;
245 virtual void modifyRoute(
246 const std::string& uniqueId,
247 std::string* uniqueName = 0,
248 std::string* label = 0,
249 std::vector<DtVector>* vertices = 0,
250 const DtSimulationAddress& addr = DtSimSendToAll);
256 virtual void createPhaseLine(
259 const std::string& uniqueName =
"",
260 const std::string& label =
"",
261 const DtSimulationAddress& addr = DtSimSendToAll,
262 unsigned int rId = 0);
267 virtual void createPhaseLine(
271 const std::string& uniqueName =
"",
272 const std::string& label =
"",
273 const DtSimulationAddress& addr = DtSimSendToAll);
276 virtual void modifyPhaseLine(
277 const std::string& uniqueId,
278 std::string* uniqueName = 0,
279 std::string* label = 0,
282 const DtSimulationAddress& addr = DtSimSendToAll);
289 virtual void createControlArea(
290 const std::vector<DtVector>& vertices,
291 const std::string& uniqueName =
"",
292 const std::string& label =
"",
293 const DtSimulationAddress& addr = DtSimSendToAll,
294 unsigned int rId = 0);
299 virtual void createControlArea(
301 const std::vector<DtVector>& vertices,
302 const std::string& uniqueName =
"",
303 const std::string& label =
"",
304 const DtSimulationAddress& addr = DtSimSendToAll) ;
307 virtual void modifyControlArea(
308 const std::string& uniqueId,
309 std::string* uniqueName = 0,
310 std::string* label = 0,
311 std::vector<DtVector>* newVertices = 0,
312 const DtSimulationAddress& addr = DtSimSendToAll);
319 virtual void createObstacle(
320 const std::vector<DtVector>& vertices,
321 const std::string& uniqueName =
"",
322 const std::string& label =
"",
323 const DtSimulationAddress& addr = DtSimSendToAll,
324 unsigned int rId = 0);
329 virtual void createObstacle(
331 const std::vector<DtVector>& vertices,
332 const std::string& uniqueName =
"",
333 const std::string& label =
"",
334 const DtSimulationAddress& addr = DtSimSendToAll) ;
337 virtual void modifyObstacle(
338 const std::string& uniqueId,
339 std::string* uniqueName = 0,
340 std::string* label = 0,
341 std::vector<DtVector>* newVertices = 0,
342 const DtSimulationAddress& addr = DtSimSendToAll);
350 virtual void createDisaggregationArea(
351 const std::vector<DtVector>& vertices,
352 const std::string& uniqueName =
"",
353 const std::string& label =
"",
354 const DtSimulationAddress& addr = DtSimSendToAll,
355 unsigned int rId = 0);
361 virtual void createDisaggregationArea(
363 const std::vector<DtVector>& vertices,
364 const std::string& uniqueName =
"",
365 const std::string& label =
"",
366 const DtSimulationAddress& addr = DtSimSendToAll) ;
369 virtual void modifyDisaggregationArea(
370 const std::string& uniqueId,
371 std::string* uniqueName = 0,
372 std::string* label = 0,
373 std::vector<DtVector>* newVertices = 0,
374 const DtSimulationAddress& addr = DtSimSendToAll);
386 virtual void createOverlayObject(
387 const DtEntityType& type,
388 const std::vector<DtVector>& vertices,
389 const DtForceType& force,
390 const std::string& name,
391 const std::string& label,
393 const std::string& parentName,
396 const DtAppearance& appearance = DtAppearance::nullAppearance(),
397 const std::string& attachTo =
"",
401 const DtSimulationAddress& addr = DtSimSendToAll);
405 virtual void createIndirectArtillery(
407 const DtSimulationAddress& addr);
416 const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
417 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
420 const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
421 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
424 virtual void createEntity(
425 const DtEntityType& type,
429 const std::string& uniqueName =
"",
430 const std::string& label =
"",
431 const DtSimulationAddress& addr = DtSimSendToAll,
432 bool groundClamp =
true,
const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
433 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
438 virtual void createEntity(
440 const DtEntityType& type,
444 const std::string& uniqueName =
"",
445 const std::string& label =
"",
446 const DtSimulationAddress& addr = DtSimSendToAll,
447 bool groundClamp =
true,
const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
448 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
451 virtual void createAggregate(
453 const DtEntityType& type,
457 const std::string& uniqueName,
458 const std::string& label =
"",
459 const DtSimulationAddress& addr = DtSimSendToAll,
460 DtAggregateState initialAggregateState = DtDisaggregated,
461 const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
462 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
465 virtual void aggregateAs(
const std::vector<makVrv::DtVrlinkSimulatedEntityState>& names,
const DtEntityType& type,
466 int force, DtAggregateState initialAggregateState, DtSimulationAddress addr,
unsigned int requestId = 0);
472 const std::vector<makVrv::DtVrlinkSimulatedEntityState>& names,
const DtEntityType& type,
473 int force, DtAggregateState initialAggregateState, DtSimulationAddress addr);
477 virtual void addToOrganization(
const std::string& childId,
const std::string& superiorId,
478 DtSimulationAddress addr = DtSimSendToAll);
483 virtual void addToForceLevelOrganization(
const std::string& entityId, DtSimulationAddress addr = DtSimSendToAll);
487 virtual void removeFromOrganization(
488 const std::string& objectId,
489 const DtSimulationAddress& addr = DtSimSendToAll);
499 virtual void createEnvironmentalObject(DtSimulationAddress addr, DtEntityType,
int force,
const std::vector<DtVector>&,
508 virtual void sendVrfObjectModifyMsg(
509 const DtSimulationAddress& addr,
510 const std::string& entityId,
511 const std::string* name = 0,
512 const std::vector<DtVector>& = std::vector<DtVector>(),
515 const std::string* label = 0,
516 DtAppearance* appearance = 0,
517 const std::string* overlayParent = 0,
518 const std::string* userData = 0);
523 virtual void sendVrfObjectCreateMsg(
524 const DtSimulationAddress& addr,
525 unsigned int requestId,
526 const std::string& name,
527 const DtObjectType& type,
528 const std::vector<DtVector>& vertices,
529 const std::string& label,
530 const DtAppearance& appearance,
535 bool createSubObjects,
536 bool clampToGroundFlag =
true,
537 const std::string& initialFormation =
"",
538 DtAggregateState initialAggregateState = DtDisaggregated,
539 const std::string& userData =
"",
const std::list<DtAdminContent*>& content = std::list<DtAdminContent*>(),
540 const std::list<DtSimInterfaceContent*>& ifaceContent = std::list<DtSimInterfaceContent*>());
549 virtual void sendVrfOverlayObjectModifyMsg(
550 const DtSimulationAddress& addr,
551 const std::string&
id,
553 const std::string* parentName = 0,
554 const std::string* attachTo = 0,
555 const std::string* userData = 0);
558 virtual void sendVrfIndirectArtilleryObjectModifyMsg(
559 const DtSimulationAddress& addr,
560 const DtEntityIdentifier&
id,
571 virtual void setLabel(
572 const std::string&
id,
const std::string& label,
573 const DtSimulationAddress& addr = DtSimSendToAll);
576 virtual void setOverlayParent(
577 const std::string&
id,
const std::string& label,
578 const DtSimulationAddress& addr = DtSimSendToAll);
581 virtual void setAltitude(
582 const std::string& name,
double altitude,
583 const DtSimulationAddress& addr = DtSimSendToAll);
586 virtual void setLocation(
587 const std::string& name,
DtVector coord,
588 const DtSimulationAddress& addr = DtSimSendToAll);
593 virtual void setAppearance(
594 const std::string& name,
int appearance,
595 const DtSimulationAddress& addr = DtSimSendToAll);
600 virtual void setCapabilities(
601 const std::string& name,
int capabilities,
602 const DtSimulationAddress& addr = DtSimSendToAll);
605 virtual void setHeading(
606 const std::string& name,
double degrees,
607 const DtSimulationAddress& addr = DtSimSendToAll);
610 virtual void setForce(
611 const std::string& name, DtForceType force,
612 const DtSimulationAddress& addr = DtSimSendToAll);
617 virtual void setResource(
const std::string& name,
618 const char* resourceType,
double value,
619 const DtSimulationAddress& addr = DtSimSendToAll);
624 virtual void setRulesOfEngagement(
625 const std::string& name,
const char* rulesType,
626 const DtSimulationAddress& addr = DtSimSendToAll);
629 virtual void setSectorOfResponsibility(
630 const std::string& name,
double center,
double size,
631 const DtSimulationAddress& addr = DtSimSendToAll);
636 virtual void setSpeed(
637 const std::string& name,
double speed,
638 const DtSimulationAddress& addr = DtSimSendToAll);
641 virtual void setTarget(
642 const std::string& name,
const std::string& target,
643 const DtSimulationAddress& addr = DtSimSendToAll);
648 virtual void setTaskedBySuperior(
const std::string& name,
649 const DtSimulationAddress& addr = DtSimSendToAll);
652 virtual void setConcealed(
const std::string& name,
653 bool yes,
const DtSimulationAddress& addr = DtSimSendToAll);
656 virtual void setEmitter(
const std::string& name,
657 int emitterId,
bool on,
658 const DtSimulationAddress& addr = DtSimSendToAll);
661 virtual void setIff(
const std::string& name,
662 bool mode1on,
int mode1code,
663 bool mode2on,
int mode2code,
664 bool mode3on,
int mode3code,
665 bool mode4on,
int mode4code,
666 DtIffAtcNavaidsAltParm4 altParm4,
667 bool mode5on,
bool useAltMode5,
668 bool modeSon,
bool emergency,
669 bool flash,
bool sti,
bool modeSTcasI,
670 const DtSimulationAddress& addr = DtSimSendToAll);
675 virtual void restore(
const std::string& name,
676 const DtSimulationAddress& addr = DtSimSendToAll);
680 virtual void setDestroyed(
const std::string& name,
681 const DtSimulationAddress& addr = DtSimSendToAll);
684 virtual void setLifeformWeaponState(
685 const std::string& name, DtWeaponState weapon,
686 const DtSimulationAddress& addr = DtSimSendToAll);
689 virtual void setLifeformPosture(
690 const std::string& name, DtLifeformState posture,
691 const DtSimulationAddress& addr = DtSimSendToAll);
694 virtual void setAggregateFormation(
695 const std::string& leader,
const std::string& formationName,
696 const DtSimulationAddress& addr = DtSimSendToAll);
701 virtual void reorganizeAggregate(
const std::string& leader,
702 const DtSimulationAddress& addr = DtSimSendToAll);
707 virtual void disaggregate(std::string name, DtSimulationAddress addr = DtSimSendToAll);
712 virtual void aggregate(std::string name, DtSimulationAddress addr = DtSimSendToAll);
715 virtual void setJoystickEnabled(std::string name, DtSimulationAddress addr = DtSimSendToAll);
718 virtual void setJoystickDisabled(std::string name, DtSimulationAddress addr = DtSimSendToAll);
722 virtual void sendSetDataMsg(
724 const DtSimulationAddress& addr = DtSimSendToAll,
725 bool updateScenario =
true);
729 virtual void sendSetRequest(
const DtSetDataRequest& s,
const std::string& name,
730 const DtSimulationAddress& addr = DtSimSendToAll,
bool updateScenario =
true);
733 virtual void sendSetRequest(
const DtSetDataRequest& s,
const std::vector<std::string>& names,
734 const DtSimulationAddress& addr = DtSimSendToAll,
bool updateScenario =
true);
741 virtual void requestIndirectArtilleryInformation(
const DtString&);
750 virtual void moveAlongRoute(
751 const std::string& entityName,
const std::string& routeName,
752 const DtSimulationAddress& addr = DtSimSendToAll);
756 virtual void moveToWaypoint(
757 const std::string& entityName,
const std::string& waypoint,
758 const DtSimulationAddress& addr = DtSimSendToAll);
763 virtual void moveToLocation(
764 const std::string& entityName,
const DtVector& destinationLocation,
765 const DtSimulationAddress& addr = DtSimSendToAll);
769 virtual void patrolBetweenWaypoints(
770 const std::string& name,
771 const std::string& waypoint1,
const std::string& waypoint2,
772 const DtSimulationAddress& addr = DtSimSendToAll);
776 virtual void patrolAlongRoute(
777 const std::string& name,
const std::string& route,
778 const DtSimulationAddress& addr = DtSimSendToAll);
785 virtual void followEntity(
786 const std::string& name,
787 const std::string& leader,
const DtVector& offset,
788 const DtSimulationAddress& addr = DtSimSendToAll);
793 const std::string& name,
794 const DtSimulationAddress& addr = DtSimSendToAll);
798 virtual void waitDuration(
799 const std::string& name, DtTime duration,
800 const DtSimulationAddress& addr = DtSimSendToAll);
805 virtual void waitElapsed(
806 const std::string& name, DtTime elapsed,
807 const DtSimulationAddress& addr = DtSimSendToAll);
813 virtual void requestCurrentTasks(
const std::string& entityName);
818 virtual void subscribeForTaskInformation(
const std::string& entityName);
822 virtual void unsubscribeForTaskInformation(
const std::string& entityName);
827 virtual void sendTaskMsg(
829 const DtSimulationAddress& addr = DtSimSendToAll);
832 virtual void sendTaskRequest(
const DtSimTask& s,
const std::vector<std::string>& names,
const DtSimulationAddress& addr = DtSimSendToAll);
834 virtual void sendTaskRequest(
const DtSimTask& s,
const std::string& name,
const DtSimulationAddress& addr = DtSimSendToAll);
840 virtual void requestTasksAndSetsFor(std::vector<DtString> name);
852 virtual void abandonPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll);
856 virtual void skipTask(std::string name, DtSimulationAddress addr = DtSimSendToAll);
859 virtual void cancelReactiveTask(std::string name, std::string scriptId, DtSimulationAddress addr = DtSimSendToAll);
863 virtual void restartPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll);
866 virtual void assignPlanByName(std::string name,
const DtPlan*, DtSimulationAddress addr = DtSimSendToAll);
869 virtual void assignMultiplePlanByName(std::vector<std::string> names,
const DtPlan*, DtSimulationAddress addr = DtSimSendToAll);
876 virtual void requestPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll);
883 virtual void subscribePlan(std::string name, DtSimulationAddress addr = DtSimSendToAll);
891 virtual void requestMultiplePlans(std::vector<std::string> names, DtSimulationAddress addr = DtSimSendToAll);
897 virtual void requestGlobalPlans(DtSimulationAddress addr = DtSimSendToAll);
903 virtual void requestGlobalPlan(std::string name, DtSimulationAddress addr = DtSimSendToAll);
907 virtual void assignGlobalPlanByName(std::string name,
const DtPlan*, DtSimulationAddress addr = DtSimSendToAll);
910 virtual void deleteGlobalPlan(std::string, DtSimulationAddress addr = DtSimSendToAll);
914 virtual void setTimeoutInterval(
int);
921 virtual void requestDIGuyAppearancesAndAnimations(std::vector<DtString> name);
929 virtual void requestResourcesFor(std::vector<std::string> names, DtSimulationAddress addr = DtSimSendToAll);
932 virtual void sendMessageToObject(
const DtVrfObjectMessage&, DtSimulationAddress addr = DtSimSendToAll);
935 virtual void sendObjectMessageAndDeleteContent(
DtVrfObjectMessage* message, DtSimulationAddress addr = DtSimSendToAll);
938 virtual void requestForces(DtSimulationAddress addr);
942 virtual void requestDoctrines();
946 virtual void requestAssignedDoctrines();
949 virtual int generateRequestId();
960 virtual void addInterfaceContentCreatorFcn(
int t, DtInterfaceContentCreatorFcn);
979 virtual void sendMessage(
const DtSimInterfaceContent& message, DtSimulationAddress addr = DtSimSendToAll);
980 virtual void sendMessageAndDeleteContent(
DtSimInterfaceContent* message, DtSimulationAddress addr = DtSimSendToAll);
988 virtual void embarkOn(
const std::vector<std::string>& children,
const std::string& parentName,
989 bool useSlot =
true,
const DtVector& overridePosition = DtVector::zero(), DtSimulationAddress addr = DtSimSendToAll);
992 virtual void disembark(
const std::vector<std::string>& children, DtSimulationAddress addr = DtSimSendToAll);
995 virtual void disembarkAll(
const std::vector<std::string>& parents, DtSimulationAddress addr = DtSimSendToAll);
998 virtual void attachTo(
const std::vector<std::string>& ids,
const std::string& parentName);
1001 virtual void detachAll(
const std::vector<std::string>& ids);
1005 virtual void logObjectConsoleToFile(
const std::string& name,
const std::string& filename);
1009 virtual void stopLoggingObjectConsoleToFile(
const std::string& objectName);
1012 virtual void setObjectNotifyLevel(
const std::string& name,
int);
1015 virtual void setTimeOfDay(
int seconds);
1018 virtual void setAggregateOnCreate(
bool);
1019 bool aggregateOnCreate()
const;
1023 virtual void requestScenarioDescription(DtSimulationAddress);
1026 virtual void setScenarioDescription(
const DtString&, DtSimulationAddress addr = DtSimSendToAll);
1030 virtual void sendLoggerSetFilename(std::string filename);
1032 virtual void sendLoggerRecordMessage();
1034 virtual void sendLoggerStopMessage();
1041 virtual void setActivated(
bool);
1050 virtual bool addStatementsAndSendPlan(
const DtPlan& plan,
DtIfPlan& planMsg,
1051 const DtSimulationAddress& addr = DtSimSendToAll,
1052 int *retiStatus = 0,
DtString* retsStmt = 0);
1092 virtual void slot_preTick(makVrv::DtDe* de);