コード例 #1
0
    public override bool Validate(SearchingArea searchingArea, DetectionArea detectionArea)
    {
        Vector3 positionWithOffset = searchingArea.Socket.position + searchingArea.Data.Offset;
        Vector3 vectorSubtraction  = detectionArea.transform.position - positionWithOffset;

        return(!(Physics.Raycast(positionWithOffset, vectorSubtraction.normalized, vectorSubtraction.magnitude, searchingArea.Data.ObstacleMask)));
    }
コード例 #2
0
#pragma warning restore 0649

    public override void Visualize(SearchingArea searchingArea, DetectionArea detectionArea)
    {
#if UNITY_EDITOR
        Debug.DrawLine(searchingArea.Socket.position + searchingArea.Data.Offset,
                       detectionArea.transform.position, _lineColor, _lineLifetime);
#endif
    }
コード例 #3
0
ファイル: Princess.cs プロジェクト: rremigius/lgj
 public void OnAreaExit(DetectionArea area, Collider2D collider)
 {
     if (area == Cage)
     {
         Angry(false);
         Disable(false);
     }
 }
コード例 #4
0
ファイル: Princess.cs プロジェクト: rremigius/lgj
 public void OnAreaEnter(DetectionArea area, Collider2D collider)
 {
     if (area == Cage)
     {
         Angry(true);
         Disable(true);
     }
 }
コード例 #5
0
ファイル: Tower.cs プロジェクト: rremigius/lgj
 public void OnAreaExit(DetectionArea area, Collider2D collider)
 {
     if (area == princessBin)
     {
         OpenPrincessGate();
         CloseGateToFreedom();
     }
 }
コード例 #6
0
ファイル: Tower.cs プロジェクト: rremigius/lgj
 public void OnAreaEnter(DetectionArea area, Collider2D collider)
 {
     if (area == princessBin)
     {
         ClosePrincessGate();
         OpenGateToFreedom();
     }
 }
コード例 #7
0
    public override bool Validate(SearchingArea searchingArea, DetectionArea detectionArea)
    {
        Vector3 forwardRotation    = Quaternion.Euler(searchingArea.Data.Rotation) * searchingArea.Socket.forward;
        Vector3 positionWithOffset = searchingArea.Socket.position + searchingArea.Data.Offset;
        Vector3 vectorSubtraction  = detectionArea.transform.position - positionWithOffset;

        return(!((searchingArea.Data.Angle != 360) &&
                 (Vector2.Angle(new Vector2(vectorSubtraction.x, vectorSubtraction.z), new Vector2(forwardRotation.x, forwardRotation.z)) > searchingArea.Data.Angle / 2)));
    }
コード例 #8
0
 public override bool Validate(SearchingArea searchingArea, DetectionArea detectionArea)
 {
     return(!((detectionArea.State == LazyBot.Area.Data.HitAreaState.Disabled) ||
              (detectionArea.State == LazyBot.Area.Data.HitAreaState.Unknown)));
 }
コード例 #9
0
        /// <summary>
        /// This function creates detection areas. It will creates as many areas as needed to have an
        /// average of 20 components per area.
        /// </summary>
        public void CreateAreas()
        {
            //this function divides the image into areas so that each area contains
            //on average 20 rectangles. This helps to speed up the process of finding
            //the closest rectangle.

            m_Areas = new List <DetectionArea>(10);

            DetectionArea Area;
            Point         Center;

            int nDividerLinesX, nDividerLinesY;
            int nAreas;
            int AreaWidth, AreaHeight;
            int AreaNumber;

            //calculate the number of dividerlines necessary to make up the desired
            //number of 20 rectangles per area
            nAreas = Image.Components.Count / 20;

            if (nAreas < 1)
            {
                nAreas = 1;
            }

            //determine the desired size of the areas.
            nDividerLinesX = 0;
            nDividerLinesY = 0;

            while (((nDividerLinesX + 1) * (nDividerLinesY + 1)) < nAreas)
            {
                nDividerLinesX++;
                nDividerLinesY = (nDividerLinesX * Image.Height) / Image.Width;
            }

            NumberAreasX = nDividerLinesX + 1;
            int NumberAreasY = nDividerLinesY + 1;

            AreaWidth  = Image.Width / NumberAreasX;
            AreaHeight = Image.Height / NumberAreasY;

            if (AreaWidth <= 0)
            {
                throw new ApplicationException("DetectSentences: AreaWidth<=0");
            }
            if (AreaHeight <= 0)
            {
                throw new ApplicationException("DetectSentences: AreaHeight<=0");
            }

            NumberAreasX++;
            NumberAreasY++;

            //create the areas
            for (int Y = 0; Y < NumberAreasY; Y++)
            {
                for (int X = 0; X < NumberAreasX; X++)
                {
                    Area = new DetectionArea();

                    Area.Area.X = X * AreaWidth;
                    Area.Area.Y = Y * AreaHeight;

                    if (X == nDividerLinesX)
                    {
                        Area.Area.Width = Image.Width - X * AreaWidth;
                    }
                    else
                    {
                        Area.Area.Width = AreaWidth;
                    }

                    if (X == nDividerLinesX)
                    {
                        Area.Area.Height = Image.Height - Y * AreaHeight;
                    }
                    else
                    {
                        Area.Area.Height = AreaHeight;
                    }

                    m_Areas.Add(Area);
                }
            }

            nAreas = NumberAreasX * NumberAreasY;

            //assign an area to every rectangle
            foreach (PageComponent Component in Image.Components)
            {
                Center = Component.CenterPoint;

                AreaNumber = (Center.X / AreaWidth);
                AreaNumber = AreaNumber + (NumberAreasX * (Center.Y / AreaHeight));

                if (AreaNumber >= m_Areas.Count)
                {
                    throw new ApplicationException("DetectSentences: Invalid Area number");
                }
                Component.DetectionAreaIndex = AreaNumber;

                //add the component to the area
                m_Areas[AreaNumber].Components.Add(Component);
            }
        }
コード例 #10
0
    public override bool Validate(SearchingArea searchingArea, DetectionArea detectionArea)
    {
        Vector3 positionWithOffset = searchingArea.Socket.position + searchingArea.Data.Offset;

        return(!((detectionArea.transform.position - positionWithOffset).magnitude > searchingArea.Data.Radius));
    }
コード例 #11
0
 protected virtual void Awake()
 {
     ignoredColliders = new List <Collider>();
     _transform       = GetComponent <Transform>();
     detectionArea    = GetComponent <DetectionArea>();
 }
コード例 #12
0
ファイル: MaskValidatorSO.cs プロジェクト: Seaqqull/lazy-bot
 public override bool Validate(SearchingArea searchingArea, DetectionArea detectionArea)
 {
     return(!(((1 << detectionArea.Collider.gameObject.layer) & searchingArea.Data.TargetMask) == 0));
 }
コード例 #13
0
ファイル: Tower.cs プロジェクト: rremigius/lgj
 void Awake()
 {
     princessGateAnimator  = transform.FindChild("PrincessGate").GetComponent <Animator>();
     gateToFreedomAnimator = transform.FindChild("GateToFreedom").GetComponent <Animator>();
     princessBin           = transform.FindChild("PrincessBin").gameObject.GetComponent <DetectionArea>();
 }