![]() |
VR-Forces Developer's Guide
|
VR-Forces is built on the VR-Link toolkit to provide interoperability with DIS and HLA RPR FOM simulation exercises.
However, VR-Forces applications utilize additional data that is not part of the standard. In order to provide a simpler API for VR-Forces applications to work with to distribute this data, we have created an additional layer on top of VR-Link, called the VR-Forces VR-Link Extensions. The primary purpose of these extensions is to wrap VR-Link publishers, reflected lists, and state repositories to add new attributes necessary for the execution of VR-Forces. These extensions can be found in the libraries vrfExtProtocol.lib, vrfExtObjectsDIS.lib, vrfExtObjectsHLA13.lib, vrfExtObjectsHLA1516.lib, and vrfExtObjectsHLA1516e.lib.
When a local VR-Forces sim object is created, one of the publishers below is created by the object's Network Interface. In order to receive remote objects, the DtRemoteObjectManager creates subclasses of the reflected lists mentioned below.
There are three primary types of objects that have been extended in this way.
VR-Forces uses the following classes in replace of the standard VR-Link publisher, reflected list, reflected object, and state repository for entities.
These classes handle the VR-Forces specific data that needs to be associated with a VR-Forces entity. In HLA this is done by publishing an additional object of the FOM class VrfExtendedAttributes for every entity that is published. In DIS these attributes are published using the Attribute PDU. The publishers and reflected object list manage these additional attributes and ensure this additional state is added to the extended state repository. This state includes things such as:
Units in VR-Forces are published as DIS/RPR FOM Aggregate objects. VR-Forces uses the following classes in replace of the standard VR-Link publisher, reflected list, reflected object, and state repository for aggregates.
Units in VR-Forces require many of the same extensions as entities, and thus they use the same Extended Attributes mechanism described for entities above.
In DIS and RPR FOM, Entity Types and Aggregate Types are identical records, however the kind field values overlap. For example, Aggregate Type with a kind of 1 is understood to be a "Military Hierarchy" while an Entity Type with a kind of 1 is understood to be a "Platform". However, because keeps all sim objects and sim object parameters in the same database, regardless of whether they are entities or aggregates, it was necessary to have a way of distinguishing these object types. As a result, VR-Forces uses alternate values for Aggregate Type kinds.
| VR-Forces Aggregate Kind | |||
|---|---|---|---|
| Aggregate type | SISO Kind | VR-Forces Kind | Internal Constant |
| Other | 0 | 10 | DtAggregateKindOther |
| Military Hierarchy | 1 | 11 | DtAggregateKindMilitaryHierarchy |
| Common Type | 2 | 12 | DtAggregateKindCommonType |
| Common Mission | 3 | 13 | DtAggregateKindCommonMission |
| Similar Capabilities | 4 | 14 | DtAggregateKindSimilarCapabilities |
| Common Location | 5 | 15 | DtAggregateKindCommonLocation |
Enumerations for object type fields are defined in objectTypeEnums.h.
All control objects (also called tactical graphics) are sim objects in VR-Forces, just like entities and units. Control objects allow you to identify locations on the terrain map that simulation objects need to interact with in some way. You might want to create control objects to represent things such as minefields, tank ditches, buildings, bridges, and so on. They are also used as objects which simulate other effects, such as the weather or dynamic terrain. Types of control objects in VR-Forces include, but are not limited to:
Control objects and their uses are described fully in VR-Forces Users Guide.
Control objects are expressed on the network as Environmental Process objects. VR-Forces uses the following classes in replace of the standard VR-Link publisher, reflected list, reflected object, and state repository for control objects.
Control objects, more than entities or aggregates, have very specific, customized purposes for VR-Forces. A lot of the data in control objects is published in VR-Forces specific environmental records. Additionally, they also require many of the same extensions as entities, and thus they use the same Extended Attributes mechanism described for entities above.
The kind field in the Object Type of a control object should be one of the following:
| Kind Values for Control Objects | ||
|---|---|---|
| Object Type | Kind | Internal Constant |
| Point | 16 | DtPointObjectKind |
| Line | 17 | DtLinearObjectKind |
| Area | 18 | DtArealObjectKind |
| Circle | 19 | DtCircleObjectKind |
| Text | 20 | DtTextObjectKind |
| Weather | 21 | DtWeatherObjectKind |
| Cloud Layer | 25 | DtCloudLayerObjectKind |
Enumerations for object type fields are defined in objectTypeEnums.h.