public void ProjectObjectLocations() { DateTime currenTime = DateTime.Now; TimeSpan ts = currenTime - m_lastLocationUpdateTime; m_lastLocationUpdateTime = currenTime; foreach (SimObject ob in AllObjects.Values) { if (ob.ShouldProject) { ob.Location.X = ob.Location.X + (ob.Velocity.VX * (Double)ts.Milliseconds / 1000); ob.Location.Y = ob.Location.Y + (ob.Velocity.VY * (Double)ts.Milliseconds / 1000); ob.Location.Z = ob.Location.Z + (ob.Velocity.VZ * (Double)ts.Milliseconds / 1000); //if (System.Double.IsNaN(ob.Location.X)) //{ // ob.ID = ob.ID; //} if (BehaviorHelper.LocationIsEqual(ob.Location, ob.DestinationLocation)) { ob.ShouldProject = false; } } } }
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; } }
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); } }