public void Update(DDDServerConnection serverConnection, DMView dmView) { if (m_done) { return; } SimObject me = dmView.AllObjects[m_thisID]; SimObject dest = dmView.AllObjects[m_destID]; LocationValue myLocation = me.Location; LocationValue destLocation = dest.Location; VelocityValue myVelocity = me.Velocity; if (ObjectMath.IsWithinRange(0.1, myLocation, destLocation)) { m_done = true; return; } if (myVelocity.VX == 0 && myVelocity.VY == 0 && myVelocity.VZ == 0) { serverConnection.SendMoveObjectRequest(m_thisID, destLocation, 1); } }
private bool DisconnectCurrentDDDSession(bool promptUser) { if (promptUser) { if (MessageBox.Show("A connection with the DDD currently exists, do you want to terminate this connection?", "Terminate DDD Connection", MessageBoxButtons.YesNo) == DialogResult.No) { return(false); } } if (_connection == null) { return(true); } lock (_connection) { try { _connection.Disconnect(); } finally { _connection = null; } } return(true); }
public void Update(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; SimActiveRegion zone = dmView.ActiveRegions[m_zoneID]; LocationValue otherLocation = null; Polygon2D azPoly = new Polygon2D(); foreach (PolygonValue.PolygonPoint p in zone.Shape.points) { azPoly.AddVertex(new Vec2D(p.X, p.Y)); } bool clear = true; foreach (String id in dmView.AllObjects.Keys) { if (id == m_thisID) { continue; } otherLocation = dmView.AllObjects[id].Location; if (Polygon2D.IsPointInside(azPoly, new Vec2D(otherLocation))) { clear = false; break; } } if (clear) { m_done = true; } }
public void Update(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; SimObject dest = dmView.AllObjects[m_destID]; LocationValue clearLoc = dest.Location; LocationValue otherLocation = null; bool clear = true; foreach (String id in dmView.AllObjects.Keys) { if (id == m_destID || id == m_thisID) { continue; } otherLocation = dmView.AllObjects[id].Location; if (ObjectMath.IsWithinRange(100, clearLoc, otherLocation)) { clear = false; break; } } if (clear) { m_done = true; } }
public void Update(DDDServerConnection serverConnection, DMView dmView) { if (DateTime.Now >= m_endTime) { m_done = true; } }
public void Update(DDDServerConnection serverConnection, DMView dmView) { if (m_done) { return; } //SimObject me = dmView.AllObjects[m_thisID]; //LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; m_absoluteLoiterPattern = m_relativeLoiterPattern.ToAbsolute(trackLocation); if (ShouldTrack(serverConnection, dmView)) { serverConnection.SendMoveObjectRequest(m_thisID, trackLocation, 1); m_trackTarget = true; } else { if (m_trackTarget) { StartLoiter(serverConnection, dmView); m_trackTarget = false; } ContinueLoiter(serverConnection, dmView); } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; //Console.Out.WriteLine(String.Format("MoveWithAvoidanceBehavior.Start(){0}",m_thisID)); LogWriter.Write(m_dmView.DecisionMakerID + "_" + m_thisID, dmView.SimTime, String.Format("MoveWithAvoidanceBehavior.Start,{0},{1}", m_destLocation.ToXML(), m_throttle)); m_wasBlocked = false; SimObject me = dmView.AllObjects[m_thisID]; //SimObject dest = dmView.AllObjects[m_destID]; LocationValue myLocation = me.Location; //LocationValue destLocation = dest.Location; if (BehaviorHelper.LocationIsEqual(myLocation, m_destLocation)) { m_done = true; return; } if (!IsBlocked2()) { m_wasBlocked = false; serverConnection.SendMoveObjectRequest(m_thisID, me.Owner, m_destLocation, m_throttle); } else { m_wasBlocked = true; } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; m_dddServer = serverConnection; m_done = false; m_endTime = DateTime.Now + new TimeSpan(0, 0, 0, 0, m_delayMS); }
public MainForm(String hostname, int port) { InitializeComponent(); _hostname = hostname; _port = port; _connection = new DDDServerConnection(); }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; m_destWaypoint = m_absoluteLoiterPattern.GetWaypointClosestTo(myLocation); serverConnection.SendMoveObjectRequest(m_thisID, m_destWaypoint.Location, 1); }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; m_dddServer = serverConnection; m_dddServer.SendStateChange(m_thisID, m_newState); m_done = true; }
public MainWindow() { InitializeComponent(); m_loadedRuns = null; m_ddd = null; m_currentRun = null; m_currentRunFinishTime = 0; m_externalCommandProcess = null; m_dddProcess = null; }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; m_dddServer = serverConnection; SimObject ob = dmView.AllObjects[m_thisID]; m_dddServer.SendTransferObjectRequest(ob.ID, ob.Owner, m_newOwner, ob.State); m_done = true; }
public ServerConnectDialog(ref DDDServerConnection serverConnection) { try { ServerHostname = System.Net.Dns.GetHostName(); } catch { } InitializeComponent(); m_serverConnection = serverConnection; }
void StopDDD() { m_ddd.Disconnect(); m_ddd = null; if (Properties.Settings.Default.RunDDDServer) { if (m_dddProcess != null) { m_dddProcess.Kill(); } m_dddProcess = null; } }
void StartLoiter(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; m_absoluteLoiterPattern = m_relativeLoiterPattern.ToAbsolute(trackLocation); m_destWaypoint = m_absoluteLoiterPattern.GetWaypointClosestTo(myLocation); m_relativeLoiterPattern.NextWaypointIndex = m_absoluteLoiterPattern.NextWaypointIndex; m_relativeLoiterPattern.CurrentWaypointIndex = m_absoluteLoiterPattern.CurrentWaypointIndex; serverConnection.SendMoveObjectRequest(m_thisID, m_destWaypoint.Location, 1); }
/*** END ***/ public DDDAdapter() { _eventsQueue = new OrderedEventsList(); _dddConnection = new DDDServerConnection(); _revealedObjects = new Dictionary <string, SeamateObject>(); _unrevealedObjects = new Dictionary <string, SeamateObject>(); _scheduledAttacks = new Dictionary <int, List <ScheduledAttack> >(); _seaLanes = new Dictionary <string, PolygonValue>(); _entryPoints = new Dictionary <string, PolygonValue>(); _objectOwnershipMaps = new Dictionary <string, List <string> >(); _reverseOwnershipMaps = new Dictionary <string, string>(); _speciesPossibleStates = new Dictionary <string, Dictionary <string, AttributeCollectionValue> >(); }
public void Update(DDDServerConnection serverConnection, DMView dmView) { if (m_done) { return; } SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; if (!m_attackInProcess) // start the attack { // start with weapons if (me.DockedWeapons.Count > 0) { m_attackWeaponID = me.DockedWeapons[0]; serverConnection.SendWeaponLaunchRequest(m_thisID, m_attackWeaponID, m_targetID); m_attackEndTime = dmView.SimTime + 12000; // give a two minute time window to start, AttackUpdate will modify this m_attackInProcess = true; m_attackIsWeapon = true; } else // use native capabilities { // figure out capability/vulnerability match up String cap = DetermineCapability(me.CapabilityList, track.VulnerabilityList); if (cap != String.Empty) { serverConnection.SendAttackObjectRequest(m_thisID, m_targetID, cap); m_attackInProcess = true; m_attackIsWeapon = false; m_attackEndTime = dmView.SimTime + 12000; } else // I don't have the right capabilities, finish up { ResetAttack(); m_done = true; } } } else // check to see if the attack was succesful { // if we are still in attack mode 2 seconds after attack was supposed to end // start another attack if (dmView.SimTime > m_attackEndTime + 2000) { ResetAttack(); } } }
void ContinueLoiter(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; if (BehaviorHelper.LocationIsEqual(myLocation, m_destWaypoint.Location)) { m_destWaypoint = m_absoluteLoiterPattern.GetNextWaypoint(); m_relativeLoiterPattern.NextWaypointIndex = m_absoluteLoiterPattern.NextWaypointIndex; m_relativeLoiterPattern.CurrentWaypointIndex = m_absoluteLoiterPattern.CurrentWaypointIndex; serverConnection.SendMoveObjectRequest(m_thisID, m_destWaypoint.Location, 1); } }
public void Update(DDDServerConnection serverConnection, DMView dmView) { if (m_done) { return; } SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; if (BehaviorHelper.LocationIsEqual(myLocation, m_destWaypoint.Location)) { m_destWaypoint = m_absoluteLoiterPattern.GetNextWaypoint(); serverConnection.SendMoveObjectRequest(m_thisID, m_destWaypoint.Location, 1); } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; SimObject dest = dmView.AllObjects[m_destID]; LocationValue myLocation = me.Location; LocationValue destLocation = dest.Location; if (ObjectMath.IsWithinRange(0.1, myLocation, destLocation)) { m_done = true; return; } serverConnection.SendMoveObjectRequest(m_thisID, destLocation, 1); }
public void Update(DDDServerConnection serverConnection, DMView dmView) { //Console.Out.WriteLine(String.Format("MoveWithAvoidanceBehavior.Update() {0}", m_thisID)); if (m_done) { return; } SimObject me = dmView.AllObjects[m_thisID]; //SimObject dest = dmView.AllObjects[m_destID]; LocationValue myLocation = me.Location; VelocityValue myVelocity = me.Velocity; if (ObjectMath.IsWithinRange(0.1, myLocation, m_destLocation)) { m_done = true; return; } if (!IsBlocked2()) { if (m_wasBlocked) { m_wasBlocked = false; serverConnection.SendMoveObjectRequest(m_thisID, me.Owner, m_destLocation, m_throttle); } else if (myVelocity.VX == 0 && myVelocity.VY == 0 && myVelocity.VZ == 0) { serverConnection.SendMoveObjectRequest(m_thisID, me.Owner, m_destLocation, m_throttle); } } else { m_wasBlocked = true; serverConnection.SendMoveObjectRequest(m_thisID, me.Owner, myLocation, 0); } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; m_trackTarget = ShouldTrack(serverConnection, dmView); if (m_trackTarget) { serverConnection.SendMoveObjectRequest(m_thisID, trackLocation, 1); } else { StartLoiter(serverConnection, dmView); } }
bool ShouldTrack(DDDServerConnection serverConnection, DMView dmView) { SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; WaypointSequence absoluteLoiterPattern = m_relativeLoiterPattern.ToAbsolute(trackLocation); Waypoint destWaypoint = absoluteLoiterPattern.GetWaypointClosestTo(myLocation); Double myDis = BehaviorHelper.Distance(myLocation, trackLocation); Double destDis = BehaviorHelper.Distance(destWaypoint.Location, trackLocation); if (myDis > (destDis * 2)) { return(true); } else { return(false); } }
void StartDDD() { if (Properties.Settings.Default.RunDDDServer) { System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo(); procInfo.FileName = dddExecutablePathTextBox.Text; procInfo.WorkingDirectory = Path.GetDirectoryName(dddExecutablePathTextBox.Text); procInfo.Arguments = Properties.Settings.Default.DDDPort.ToString(); procInfo.CreateNoWindow = true; procInfo.UseShellExecute = true; m_dddProcess = System.Diagnostics.Process.Start(procInfo); Thread.Sleep(1000); } m_ddd = new DDDServerConnection(); m_ddd.ConnectToServer(Properties.Settings.Default.DDDHostname, Properties.Settings.Default.DDDPort); m_ddd.DDDClientPath = Properties.Settings.Default.DDDClientPath; if (!m_ddd.ReadSimModel()) { MessageBox.Show(String.Format("Unable to read sim model")); return; } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; m_dddServer = serverConnection; SimObject me = dmView.AllObjects[m_thisID]; LocationValue myLocation = me.Location; SimObject track = dmView.AllObjects[m_targetID]; LocationValue trackLocation = track.Location; m_originalLocation = myLocation; //m_trackTarget = ShouldTrack(serverConnection, dmView); m_engagementState = EngagementState.Tracking; //if (m_trackTarget) //{ // serverConnection.SendMoveObjectRequest(m_thisID, trackLocation, 1); //} //else //{ // StartLoiter(serverConnection, dmView); //} }
public void Update(DDDServerConnection serverConnection, DMView dmView) { if (m_behaviorQueue.Count >= 1) { //Console.Out.WriteLine(String.Format("ObjectControlAgent.Update() {0}",simObject.ID)); if (m_currentBehavior != m_behaviorQueue[0]) { m_currentBehavior = m_behaviorQueue[0]; //Console.Out.WriteLine(String.Format("ObjectControlAgent.Update() starting {0} for {1}",m_currentBehavior.GetName(), simObject.ID)); m_currentBehavior.Start(serverConnection, dmView); } m_currentBehavior.Update(serverConnection, dmView); if (m_currentBehavior.IsDone(serverConnection, dmView)) { //Console.Out.WriteLine(String.Format("ObjectControlAgent.Update(){0} is done for {1}", m_currentBehavior.GetName(), simObject.ID)); m_behaviorQueue.Remove(m_currentBehavior); m_currentBehavior = null; } } else { m_currentBehavior = null; } }
public void Start(DDDServerConnection serverConnection, DMView dmView) { m_dmView = dmView; m_dddServer = serverConnection; }
public bool IsDone(DDDServerConnection serverConnection, DMView dmView) { return(m_done); }
public void Start(DDDServerConnection serverConnection, DMView dmView) { }