Skip to content
Snippets Groups Projects
Commit dd2cf0cd authored by johnnysmiles82's avatar johnnysmiles82
Browse files

Merge origin/master

parents 2fd878bd 5738da0a
No related branches found
No related tags found
No related merge requests found
...@@ -4,9 +4,13 @@ package MV3500Cohort2021JulySeptember.homework3.Fisher; ...@@ -4,9 +4,13 @@ package MV3500Cohort2021JulySeptember.homework3.Fisher;
/** /**
* Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved. * Copyright (c) 2008-2021, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
* This work is provided under a BSD open-source license, see project license.html and license.txt * This work is provided under a BSD open-source license, see project license.html and license.txt
* @author brutzman@nps.edu * @author adfis
*
* This simulation has two entities moving towards each other and when they
* collide a detonation happens.
*/ */
import edu.nps.moves.dis7.enumerations.ForceID;
import edu.nps.moves.dis7.enumerations.VariableRecordType; import edu.nps.moves.dis7.enumerations.VariableRecordType;
import edu.nps.moves.dis7.pdus.CommentPdu; import edu.nps.moves.dis7.pdus.CommentPdu;
import edu.nps.moves.dis7.pdus.EntityID; import edu.nps.moves.dis7.pdus.EntityID;
...@@ -62,9 +66,19 @@ public class ExampleSimulationProgramFisher ...@@ -62,9 +66,19 @@ public class ExampleSimulationProgramFisher
EntityID entityID_1 = new EntityID(); EntityID entityID_1 = new EntityID();
entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID; entityID_1.setSiteID(1).setApplicationID(2).setEntityID(3); // made-up example ID;
// TODO someday, use enumerations; is there a unique site triplet for MOVES Institute? // TODO someday, use enumerations; is there a unique site triplet for MOVES Institute?
EntityID entityID_2 = new EntityID();
entityID_2.setSiteID(4).setApplicationID(5).setEntityID(6);
EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu(); EntityStatePdu entityStatePdu_1 = pduFactory.makeEntityStatePdu();
entityStatePdu_1.setEntityID(entityID_1); entityStatePdu_1.setEntityID(entityID_1);
entityStatePdu_1.setForceId(ForceID.FRIENDLY);
EntityStatePdu entityStatePdu_2 = pduFactory.makeEntityStatePdu();
entityStatePdu_2.setEntityID(entityID_2);
entityStatePdu_2.getEntityLocation().setX(10);
entityStatePdu_2.setForceId(ForceID.OPPOSING);
FirePdu firePdu_1a = pduFactory.makeFirePdu(); // for entity 1 first weapon (if any) FirePdu firePdu_1a = pduFactory.makeFirePdu(); // for entity 1 first weapon (if any)
FirePdu firePdu_1b = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any) FirePdu firePdu_1b = pduFactory.makeFirePdu(); // for entity 1 second weapon (if any)
...@@ -97,7 +111,7 @@ public class ExampleSimulationProgramFisher ...@@ -97,7 +111,7 @@ public class ExampleSimulationProgramFisher
// Where is my entity? Insert changes in position; this sample only changes X position. // Where is my entity? Insert changes in position; this sample only changes X position.
entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // 1m per timestep entityStatePdu_1.getEntityLocation().setX(entityStatePdu_1.getEntityLocation().getX() + 1.0); // 1m per timestep
entityStatePdu_2.getEntityLocation().setX(entityStatePdu_2.getEntityLocation().getX() - 1.0);
// decide whether to fire, and then update the firePdu. Hmmm, you might want a target to shoort at! // decide whether to fire, and then update the firePdu. Hmmm, you might want a target to shoort at!
// etc. etc. your code goes here for your simulation of interest // etc. etc. your code goes here for your simulation of interest
...@@ -129,7 +143,7 @@ public class ExampleSimulationProgramFisher ...@@ -129,7 +143,7 @@ public class ExampleSimulationProgramFisher
System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent"); System.out.println ("sending PDUs for simulation step " + simulationLoopCount + ", monitor loopback to confirm sent");
// Below is the PDU that comes out as "Comment" in the info // Below is the PDU that comes out as "Comment" in the info
sendAllPdusForLoopTimestep(entityStatePdu_1, firePdu_1a, detonationPdu, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3); sendAllPdusForLoopTimestep(entityStatePdu_1, entityStatePdu_2, firePdu_1a, timeStepComment, narrativeMessage1, narrativeMessage2, narrativeMessage3);
System.out.println ("... [PDUs successfully sent for this loop]"); System.out.println ("... [PDUs successfully sent for this loop]");
...@@ -137,6 +151,7 @@ public class ExampleSimulationProgramFisher ...@@ -137,6 +151,7 @@ public class ExampleSimulationProgramFisher
// loop now finished, check whether to terminate if simulation complete, otherwise continue // loop now finished, check whether to terminate if simulation complete, otherwise continue
if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good if (simulationComplete || (simulationLoopCount > 10000)) // for example; including fail-safe condition is good
{ {
sendSinglePdu(detonationPdu);
System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount + System.out.println ("... [Termination condition met, simulationComplete=" + simulationComplete + "]"); // ", final loopCount=" + loopCount +
break; break;
} }
...@@ -309,23 +324,27 @@ public class ExampleSimulationProgramFisher ...@@ -309,23 +324,27 @@ public class ExampleSimulationProgramFisher
* @param commentType enumeration value describing purpose of the narrative comment * @param commentType enumeration value describing purpose of the narrative comment
* @param comments String array of narrative comments * @param comments String array of narrative comments
*/ */
public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu, public void sendAllPdusForLoopTimestep(EntityStatePdu entityStatePdu1,
EntityStatePdu entityStatePdu2,
FirePdu firePdu, FirePdu firePdu,
DetonationPdu detonationPdu, //DetonationPdu detonationPdu,
VariableRecordType commentType, VariableRecordType commentType,
// vararg... variable-length set of String comments can optionally follow // vararg... variable-length set of String comments can optionally follow
String... comments) String... comments)
{ {
if (entityStatePdu != null) if (entityStatePdu1 != null)
sendSinglePdu(entityStatePdu); sendSinglePdu(entityStatePdu1);
if (entityStatePdu2 != null)
sendSinglePdu(entityStatePdu2);
if (firePdu != null) if (firePdu != null)
sendSinglePdu(firePdu); // bang sendSinglePdu(firePdu); // bang
if (detonationPdu != null) //if (detonationPdu != null)
sendSinglePdu(detonationPdu); // sendSinglePdu(detonationPdu);
//
if ((comments != null) && (comments.length > 0)) if ((comments != null) && (comments.length > 0))
{ {
ArrayList<String> newCommentsList = new ArrayList<>(); ArrayList<String> newCommentsList = new ArrayList<>();
...@@ -385,7 +404,7 @@ public class ExampleSimulationProgramFisher ...@@ -385,7 +404,7 @@ public class ExampleSimulationProgramFisher
thisProgram.runSimulation (); // ... your simulation execution code goes in there ... thisProgram.runSimulation (); // ... your simulation execution code goes in there ...
pduRecorder.end(); //pduRecorder.end();
thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering thisProgram.tearDownNetworkInterface(); // make sure no processes are left lingering
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment