Exemplo n.º 1
0
 public void Update(DDDServerConnection serverConnection, DMView dmView)
 {
     if (DateTime.Now >= m_endTime)
     {
         m_done = true;
     }
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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;
            }

        }
Exemplo n.º 8
0
        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;
            }
        }
Exemplo n.º 9
0
        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;
            }



        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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;
            }
        }
Exemplo n.º 12
0
 public void Update(DDDServerConnection serverConnection, DMView dmView)
 {
     if (DateTime.Now >= m_endTime)
     {
         m_done = true;
     }
 }
Exemplo n.º 13
0
 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);
 }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        public void Start(DDDServerConnection serverConnection, DMView dmView)
        {
            m_dmView    = dmView;
            m_dddServer = serverConnection;


            m_dddServer.SendStateChange(m_thisID, m_newState);

            m_done = true;
        }
Exemplo n.º 16
0
        public void Start(DDDServerConnection serverConnection, DMView dmView)
        {
            m_dmView = dmView;
            m_dddServer = serverConnection;
            

            m_dddServer.SendStateChange(m_thisID, m_newState);
            
            m_done = true;
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);

        }
Exemplo n.º 19
0
        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;
        }
Exemplo n.º 20
0
        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;
        }
Exemplo n.º 21
0
 public MoveWithAvoidanceBehavior(String thisID, LocationValue destLoc, double avoidRange, double avoidPathWidth, List <String> objectClassesToAvoid, double throttle)
 {
     m_thisID               = thisID;
     m_destLocation         = destLoc;
     m_avoidRange           = avoidRange;
     m_avoidPathWidth       = avoidPathWidth;
     m_dmView               = null;
     m_objectClassesToAvoid = objectClassesToAvoid;
     m_throttle             = throttle;
     m_holdWP               = null;
     m_blockedBy            = String.Empty;
 }
Exemplo n.º 22
0
        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();
                }
            }   
            
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
        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);
        }
Exemplo n.º 25
0
        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();
                }
            }
        }
Exemplo n.º 26
0
        public MoveWithAvoidanceBehavior(String thisID, LocationValue destLoc, double avoidRange,double avoidPathWidth, List<String> objectClassesToAvoid, double throttle)
        {
            m_thisID = thisID;
            m_destLocation = destLoc;
            m_avoidRange = avoidRange;
            m_avoidPathWidth = avoidPathWidth;
            m_dmView = null;
            m_objectClassesToAvoid = objectClassesToAvoid;
            m_throttle = throttle;
            m_holdWP = null;
            m_blockedBy = String.Empty;

            
        }
Exemplo n.º 27
0
        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);
            }
        }
Exemplo n.º 28
0
 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);
     }
     
 }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
        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);
            }
        }
Exemplo n.º 31
0
        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);


        }
Exemplo n.º 32
0
        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);
            }

        


        }
Exemplo n.º 33
0
        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;
            }
        }
Exemplo n.º 34
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);
            }
        }
Exemplo n.º 35
0
        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);
            }
        }
Exemplo n.º 36
0
        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);
            }
        }
Exemplo n.º 37
0
        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);
            //}
        }
Exemplo n.º 38
0
 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;
     }
 }
Exemplo n.º 39
0
        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);
            }

            




        }
Exemplo n.º 40
0
        public void Start(DDDServerConnection serverConnection, DMView dmView)
        {

        }
Exemplo n.º 41
0
        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);
            //}


        }
Exemplo n.º 42
0
 public void Start(DDDServerConnection serverConnection, DMView dmView)
 {
 }
Exemplo n.º 43
0
 public void Update(DDDServerConnection serverConnection, DMView dmView)
 {
 }
Exemplo n.º 44
0
 public bool IsDone(DDDServerConnection serverConnection, DMView dmView)
 {
     //Console.Out.WriteLine(String.Format("MoveWithAvoidanceBehavior.IsDone() {0} {1}", m_thisID,m_done));
     return(m_done);
 }
Exemplo n.º 45
0
        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);


            switch (m_engagementState)
            {
            case EngagementState.Tracking:
                if (ShouldTrack(serverConnection, dmView))
                {
                    serverConnection.SendMoveObjectRequest(m_thisID, trackLocation, 1);
                }
                else
                {
                    m_engagementState = EngagementState.Attacking;
                    StartLoiter(serverConnection, dmView);
                }
                break;

            case EngagementState.Attacking:
                ContinueLoiter(serverConnection, dmView);
                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();
                            if (m_returnAfter)
                            {
                                m_engagementState = EngagementState.Returning;
                                m_dddServer.SendMoveObjectRequest(m_thisID, m_originalLocation, 1);
                            }
                            else
                            {
                                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();
                    }
                }
                break;

            case EngagementState.Returning:
                if (BehaviorHelper.Distance(myLocation, m_originalLocation) < 1)
                {
                    m_done = true;
                }
                break;
            }
        }
Exemplo n.º 46
0
 /// <summary>
 /// The constructor for the DDDServerConnection object.
 /// </summary>
 /// 
 public DDDServerConnection()
 {
     m_subscibedEvents = new List<string>();
     m_eventQueue = new List<SimulationEvent>();
     m_netClient = new NetworkClient();
     m_players = new List<string>();
     lock (PublicDmViewLock)
     { m_dmViews = new Dictionary<string, DMView>(); }
     m_dddClientPath = "";
     m_dddTimeInt = 0;
     m_dddTimeString = "0:00:00";
     _eventCallbacks = new Dictionary<string, List<ProcessSimulationEvent>>();
     m_regionDefinitions = new Dictionary<string, PolygonValue>();
     m_groundTruthView = new DMView("Ground_Truth");
 }
Exemplo n.º 47
0
 public void ResetForNewSession()
 {
     m_players = new List<string>();
     lock (PublicDmViewLock)
     {
         m_dmViews = new Dictionary<string, DMView>();
     }
     m_subscibedEvents = new List<string>();
     m_eventQueue = new List<SimulationEvent>();
     m_dddClientPath = "";
     m_dddTimeInt = 0;
     m_dddTimeString = "0:00:00";
     m_playerID = "";
     m_regionDefinitions = new Dictionary<string, PolygonValue>();
     m_groundTruthView = new DMView("Ground_Truth");
 }
Exemplo n.º 48
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);
            }
            

        }
Exemplo n.º 49
0
 public bool IsDone(DDDServerConnection serverConnection, DMView dmView)
 {
     //Console.Out.WriteLine(String.Format("MoveWithAvoidanceBehavior.IsDone() {0} {1}", m_thisID,m_done));
     return m_done;
 }
Exemplo n.º 50
0
        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);
            }

            
        }
Exemplo n.º 51
0
 public bool IsDone(DDDServerConnection serverConnection, DMView dmView)
 {
     return(m_done);
 }
Exemplo n.º 52
0
 public void Start(DDDServerConnection serverConnection, DMView dmView)
 {
     m_dmView    = dmView;
     m_dddServer = serverConnection;
 }
Exemplo n.º 53
0
 /// <summary>
 /// Get the DMView object that contains DDD object state information.
 /// </summary>
 /// <param name="dm"></param>
 /// <returns></returns>
 public DMView GetDMView(String dm)
 {
     if (m_dmViews.ContainsKey(dm))
     {
         return m_dmViews[dm];
     }
     else
     {
         lock (PublicDmViewLock)
         {
             m_dmViews[dm] = new DMView(dm);
         }
         return m_dmViews[dm]; //fine to return ref out of lock, consumer of this object needs to use the lock while accessing dmView
     }
 }
Exemplo n.º 54
0
        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);


            switch (m_engagementState)
            {
                case EngagementState.Tracking:
                    if (ShouldTrack(serverConnection, dmView))
                    {
                        serverConnection.SendMoveObjectRequest(m_thisID, trackLocation, 1);
                    }
                    else
                    {
                        m_engagementState = EngagementState.Attacking;
                        StartLoiter(serverConnection, dmView);
                    }
                    break;
                case EngagementState.Attacking:
                    ContinueLoiter(serverConnection, dmView);
                    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();
                                if (m_returnAfter)
                                {
                                    m_engagementState = EngagementState.Returning;
                                    m_dddServer.SendMoveObjectRequest(m_thisID, m_originalLocation, 1);
                                }
                                else
                                {
                                    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();
                        }
                    }
                    break;
                case EngagementState.Returning:
                    if (BehaviorHelper.Distance(myLocation, m_originalLocation) < 1)
                    {
                        m_done = true;
                    }
                    break;
            }
        }
Exemplo n.º 55
0
 public void Update(DDDServerConnection serverConnection, DMView dmView)
 {
 }
Exemplo n.º 56
0
 public bool IsDone(DDDServerConnection serverConnection, DMView dmView)
 {
     return m_done;
 }
Exemplo n.º 57
0
 public void Start(DDDServerConnection serverConnection, DMView dmView)
 {
     m_dmView = dmView;
     m_dddServer = serverConnection;
 }