From e990d63ece22f08518239c56a0d7c66a7dc6f7ca Mon Sep 17 00:00:00 2001
From: brutzman <brutzman@nps.edu>
Date: Tue, 11 Jan 2022 23:03:47 -0800
Subject: [PATCH] initializeSimulationEntities(), SimulationManager addition

---
 .../ExampleSimulationProgram.java             | 104 +++++++++-----
 .../ExampleSimulationProgramLog.txt           | 135 +++++++++---------
 2 files changed, 140 insertions(+), 99 deletions(-)

diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
index 75446336ba..87da713991 100644
--- a/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
+++ b/examples/src/OpenDis7Examples/ExampleSimulationProgram.java
@@ -12,6 +12,8 @@ import edu.nps.moves.dis7.pdus.*;
 import edu.nps.moves.dis7.utilities.DisThreadedNetworkInterface;
 import edu.nps.moves.dis7.utilities.PduFactory;
 import edu.nps.moves.dis7.utilities.stream.PduRecorder;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -29,6 +31,7 @@ public class ExampleSimulationProgram
     static final int     NETWORK_PORT_DEFAULT     = 3000;
                  String  networkAddress           = NETWORK_ADDRESS_DEFAULT;
                  int     networkPort              = NETWORK_PORT_DEFAULT;
+                 String  thisHostName             = "localhost";
                  String  DEFAULT_OUTPUT_DIRECTORY = "./pduLog";
     
     /** seconds for real-time execution (not simulation time, which may or may not be the same) */
@@ -42,6 +45,57 @@ public class ExampleSimulationProgram
      * Output prefix to help with logging by identifying this class (overridden in subclass).
      */
     protected static String TRACE_PREFIX;
+    
+    /* Declare DIS Protocol Data Unit (PDU) classes for simulation entities */
+    
+    PduFactory.TimestampStyle    timestampStyle      = PduFactory.TimestampStyle.YEAR;
+    PduFactory                   pduFactory          = new PduFactory(timestampStyle);
+       
+    protected EntityID           entityID_1          = new EntityID();
+    protected EntityID           entityID_2          = new EntityID();
+    protected EntityStatePdu     entityStatePdu_1    = pduFactory.makeEntityStatePdu();
+    protected EntityStatePdu     entityStatePdu_2    = pduFactory.makeEntityStatePdu();
+    protected FirePdu            firePdu_1a          = pduFactory.makeFirePdu(); // for entity 1 first  weapon (if any)
+//  protected FirePdu            firePdu_1b          = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any)
+    protected MunitionDescriptor munitionDescriptor1 = new MunitionDescriptor();
+    
+    SimulationManager        simulationManager = new SimulationManager();
+    
+    /** Get ready, get set... initialize simulation entities
+     */
+    public void initializeSimulationEntities()
+    {
+        
+        // Your model setup: define participants.  who's who in this zoo?
+        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
+        
+        // PDU objects are already created, now set their values.
+        entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID;
+        
+        entityID_2.setSiteID(1).setApplicationID(2).setEntityID(4); // made-up example ID; 
+        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
+
+        entityStatePdu_1.setEntityID(entityID_1);
+        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
+        entityStatePdu_1.setEntityType(new _001Poseidon()); // note import statement above
+        entityStatePdu_1.setMarking("Entity #1");
+        entityStatePdu_1.getMarkingString(); // check
+
+        entityStatePdu_2.setEntityID(entityID_2);
+        entityStatePdu_2.setForceId(ForceID.OPPOSING);
+        entityStatePdu_2.setEntityType(new _002Triton()); // note import statement above
+        entityStatePdu_2.setMarking("Entity #2");
+
+        // TODO how should we customize this munition?  what is it for your simulation?
+        munitionDescriptor1.setQuantity(1);
+        firePdu_1a.setDescriptor(munitionDescriptor1).setRange(1000.0f);
+        
+        // TODO simulation management PDUs for startup, planning to design special class support 
+//        simulationManager.addEntity();
+        simulationManager.setDescriptor("ExampleSimulationProgram");
+        simulationManager.addHost(thisHostName);
+        simulationManager.setDisThreadedNetworkInterface(disNetworkInterface);
+    }
                  
     /**
      * This runSimulationLoops() method is for you, a customizable programmer-modifiable
@@ -69,35 +123,10 @@ public class ExampleSimulationProgram
 
         pduRecorder.setVerbose(true);
         
-        // Your model setup: define participants.  who's who in this zoo?
-        // Assuming you keep track of entity objects...  here is some support for for Entity 1.
+        initializeSimulationEntities();
         
-        // create PDU objects and set their values.
-        EntityID       entityID_1    = new EntityID();
-        entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID;
-        
-        EntityID       entityID_2    = new EntityID();
-        entityID_2.setSiteID(1).setApplicationID(2).setEntityID(4); // made-up example ID; 
-        // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
-
-        EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_1.setEntityID(entityID_1);
-        entityStatePdu_1.setForceId(ForceID.FRIENDLY);
-        entityStatePdu_1.setEntityType(new _001Poseidon()); // note import statement above
-        entityStatePdu_1.setMarking("Entity #1");
-        entityStatePdu_1.getMarkingString(); // check
-
-        EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
-        entityStatePdu_2.setEntityID(entityID_2);
-        entityStatePdu_2.setForceId(ForceID.OPPOSING);
-        entityStatePdu_2.setEntityType(new _002Triton()); // note import statement above
-        entityStatePdu_2.setMarking("Entity #2");
-
-        FirePdu        firePdu_1a       = pduFactory.makeFirePdu(); // for entity 1 first  weapon (if any)
-//      FirePdu        firePdu_1b       = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any)
-        // should we customize this munition?  what is it for your simulation?
-        
-        // TODO simulation management PDUs for startup, planning to design special class support
+        simulationManager.simulationJoin();
+        simulationManager.simulationStart();
         
         // ===================================================================================================
         // loop the simulation while allowed, programmer can set additional conditions to break out and finish
@@ -162,7 +191,10 @@ public class ExampleSimulationProgram
         narrativeMessage2 = "runSimulation() completed successfully"; // all done
         sendCommentPdu(narrativeComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
         System.out.println ("... [final CommentPdu successfully sent for simulation]");
+        
         // TODO simulation management PDUs
+        simulationManager.simulationStop();
+        simulationManager.simulationLeave();
       } 
       catch (InterruptedException iex) // handle any exception that your code might choose to provoke!
       {
@@ -184,8 +216,6 @@ public class ExampleSimulationProgram
     VariableRecordType           otherComment = VariableRecordType.OTHER;
     
     // class variables
-    PduFactory                              pduFactory = new PduFactory();
-    PduFactory.TimestampStyle               timestampStyle = PduFactory.TimestampStyle.YEAR;
     DisThreadedNetworkInterface             disNetworkInterface;
     DisThreadedNetworkInterface.PduListener pduListener;
     Pdu                                     receivedPdu;
@@ -198,6 +228,16 @@ public class ExampleSimulationProgram
     public ExampleSimulationProgram()
     {
         pduFactory.setTimestampStyle(timestampStyle);
+        
+        try
+        {
+            thisHostName = InetAddress.getLocalHost().getHostName();
+            System.out.println(TRACE_PREFIX + "thisHostName=" + thisHostName);
+        }
+        catch (UnknownHostException uhe)
+        {
+            System.out.println(TRACE_PREFIX + thisHostName + "not connected to network: " + uhe.getMessage());
+        }
     }
     
     /**
@@ -207,7 +247,7 @@ public class ExampleSimulationProgram
      */
     public ExampleSimulationProgram(String address, int port)
     {
-        super(); // if code block is provided
+        super();
         
         setNetworkAddress(address);
         
@@ -388,7 +428,7 @@ public class ExampleSimulationProgram
     }
     
     /**
-     * Initial execution via main() method: handle args array of initialization arguments here
+     * Initial execution via main() method: handle args array of command-line initialization (CLI) arguments here
      * @param args command-line parameters: network address and port
      */
     protected void handleArgs (String[] args)
diff --git a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
index 1837e16790..53d62ff52f 100644
--- a/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
+++ b/examples/src/OpenDis7Examples/ExampleSimulationProgramLog.txt
@@ -7,14 +7,15 @@ Compiling 1 source file to C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\buil
 compile-single:
 run-single:
 [OpenDis7Examples.ExampleSimulationProgram] main() started...
-[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
+[OpenDis7Examples.ExampleSimulationProgram] thisHostName=IT160907-UWALPP
+[DisThreadedNetworkInterface] using network interface PANGP Virtual Ethernet Adapter
 [DisThreadedNetworkInterface] datagramSocket.joinGroup  address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
 [DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true
 [DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true
 Network confirmation: address=239.1.2.3 port=3000
 Beginning pdu save to directory ./pduLog
-Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog4.dislog
-[DisThreadedNetworkInterface] using network interface Intel(R) Wi-Fi 6E AX210 160MHz
+Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog1.dislog
+[DisThreadedNetworkInterface] using network interface PANGP Virtual Ethernet Adapter
 [DisThreadedNetworkInterface] datagramSocket.joinGroup  address=239.1.2.3 port=3000 isConnected()=false createDatagramSocket() complete.
 [DisThreadedNetworkInterface] createThreads() receiveThread.isAlive()=true
 [DisThreadedNetworkInterface] createThreads() sendingThread.isAlive()=true
@@ -22,92 +23,92 @@ Recorder log file open: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 1, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  1] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  2] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  3] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  1] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  2] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  2] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  2] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  3] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  3] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  3] DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 1]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  4] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  4] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 2, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  5] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  6] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  7] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  5] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  6] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  6] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  6] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  7] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  7] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  7] DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 2]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  8] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  8] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 3, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt  9] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 10] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 11] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt  9] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 10] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 10] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 11] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 11] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 11] DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 3]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 12] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 4, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 13] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 14] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 15] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 13] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 14] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 14] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 15] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 15] DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 4]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 16] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 16] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... My simulation just did something, no really...
 ... [Pausing for 1.0 seconds]
 sending PDUs for simulation step 5, monitor loopback to confirm sent
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 17] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 18] edu.nps.moves.dis7.enumerations.DisPduType 02 FIRE, size 96 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 17] DisPduType 01 ENTITY_STATE   Entity #1, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 18] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 18] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 18] DisPduType 02 FIRE, size 96 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 19] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 19] DisPduType 22 COMMENT, size 104 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 19] DisPduType 22 COMMENT, size 104 bytes)
 *** [Narrative comment sent: APPLICATION_TIMESTEP] [MV3500 ExampleSimulationProgram, runSimulation() loop 5]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 20] edu.nps.moves.dis7.enumerations.DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 20] DisPduType 01 ENTITY_STATE   Entity #2, size 144 bytes)
 ... [PDUs successfully sent for this loop]
 ... [loop termination condition met, simulationComplete=true]
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
-[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
-[DisThreadedNetworkInterface PduRecorder] [receipt 21] edu.nps.moves.dis7.enumerations.DisPduType 22 COMMENT, size 120 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [sending 21] DisPduType 22 COMMENT, size 120 bytes)
+[DisThreadedNetworkInterface ExampleSimulationProgram pdu looping] [receipt 21] DisPduType 22 COMMENT, size 120 bytes)
+[DisThreadedNetworkInterface PduRecorder] [receipt 21] DisPduType 22 COMMENT, size 120 bytes)
 *** [Narrative comment sent: COMPLETE_EVENT_REPORT] [MV3500 ExampleSimulationProgram, runSimulation() completed successfully]
 ... [final CommentPdu successfully sent for simulation]
 *** setKillSentinelAndInterrupts() killed=true sendingThread.isInterrupted()=false receiveThread.isInterrupted()=true
@@ -117,6 +118,6 @@ sending PDUs for simulation step 5, monitor loopback to confirm sent
 *** killThread() status: receiveThread.isAlive()=false receiveThread.isInterrupted()=true
 *** Thread close status: sendingThread.isAlive()=false receiveThread.isAlive()=false
 
-PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog4.dislog
+PduRecorder.stop() closing recorder log file: C:\x-nps-gitlab\NetworkedGraphicsMV3500\examples\pduLog\PduCaptureLog1.dislog
 [OpenDis7Examples.ExampleSimulationProgram] complete.
 BUILD SUCCESSFUL (total time: 10 seconds)
-- 
GitLab