Exemplo n.º 1
0
        /// <summary>
        /// Enter an arena and go to a specified location 
        /// </summary>
        /// <param name="arena">Arena to enter</param>
        /// <param name="x">X coordinate (latitude)</param>
        /// <param name="y">Y coordinate (longitude)</param>
        /// <param name="direction"></param>
        /// <returns>True if arena entered successfully, otherwise false</returns>
        public bool EnterArena(IArena arena, uint x, uint y, DroneDirection direction)
        {
            if (arena == null || x > arena.UpperLatitude || y > arena.UpperLongitude)
            {
                return false;
            }

            this.Arena = arena;
            this.Latitude = x;
            this.Longitude = y;
            this.Direction = direction;

            return true;
        }
Exemplo n.º 2
0
    // Update is called once per frame
    void FixedUpdate()
    {
        nextWaypoint = currentWaypoint + 1;

        //figure out drone's current direction
        if (waypoints[nextWaypoint].x < 0)
        {
            currentDirection = DroneDirection.LEFT;
        }
        else if (waypoints[nextWaypoint].x > 0)
        {
            currentDirection = DroneDirection.RIGHT;
        }
        else if (waypoints[nextWaypoint].y > 0)
        {
            currentDirection = DroneDirection.UP;
        }
        else if (waypoints[nextWaypoint].y < 0)
        {
            currentDirection = DroneDirection.DOWN;
        }

        //move the drone...
        transform.position = Vector3.Lerp
                                 (transform.position, transform.position + waypoints[nextWaypoint], speed * Time.deltaTime);

        if (currentDirection == DroneDirection.LEFT &&
            transform.position.x - startPosition.x < waypoints[nextWaypoint].x - currentRelativePosition.x)
        {
            NextWaypoint();
        }
        if (currentDirection == DroneDirection.RIGHT &&
            transform.position.x - startPosition.x > waypoints[nextWaypoint].x - currentRelativePosition.x)
        {
            NextWaypoint();
        }
        if (currentDirection == DroneDirection.UP &&
            transform.position.y - startPosition.y > waypoints[nextWaypoint].y - currentRelativePosition.y)
        {
            NextWaypoint();
        }
        if (currentDirection == DroneDirection.DOWN &&
            transform.position.y - startPosition.y < waypoints[nextWaypoint].y - currentRelativePosition.y)
        {
            NextWaypoint();
        }
    }
Exemplo n.º 3
0
    void NextWaypoint()
    {
        currentDirection = DroneDirection.UNASSIGNED;

        if (currentWaypoint < waypoints.Length - 2)
        {
            currentWaypoint++;
            //update position variable relative to waypoints:
            currentRelativePosition = new Vector3(
                currentRelativePosition.x - waypoints[currentWaypoint].x,
                currentRelativePosition.y - waypoints[currentWaypoint].y,
                0);
        }
        else
        {
            currentWaypoint = 0; //cyclical loop
            //update position variable relative to waypoints:
            currentRelativePosition = new Vector3(0, 0, 0);
        }
    }
Exemplo n.º 4
0
        public override GameObject CreateDroneInstance(DroneFactory factory, bool isAdded, Area area, StartPositionDelegate posDelegate = null)
        {
            Vector3 pos;

            if (posDelegate != null)
            {
                pos = posDelegate(Size, area);
            }
            else
            {
                pos = isAdded
                    ? DroneStartPosition.GetRandomCorner(Size, area)
                    : DroneStartPosition.GetRandomPosition(Size, area);
            }

            var newDrone = Object.Instantiate(factory.SetDroneType[DroneType], pos,
                                              Quaternion.Euler(0, _startDirection + DroneDirection.RandomDirection(_restrictedZone, _coneRange), 0), factory.transform);

            return(newDrone);
        }
Exemplo n.º 5
0
        private string BuildCommand(uint lat, uint lng, DroneDirection direction)
        {
            string stringDirection;
            switch (direction)
            {
                case DroneDirection.North:
                    stringDirection = "N";
                    break;
                case DroneDirection.South:
                    stringDirection = "S";
                    break;
                case DroneDirection.East:
                    stringDirection = "E";
                    break;
                default:
                    stringDirection = "W";
                    break;
            }

            return string.Format("{0} {1} {2}", lat, lng, stringDirection);
        }
Exemplo n.º 6
0
 private void SetDirection(DroneDirection direction)
 {
     this.drone.EnterArena(this.arena.Object, 0, 0, direction);
 }