Example #1
0
    public static float DistanceFromCenter(Point p, Vector3 worldPosition)
    {
        Vector3 localWorldPosition = worldPosition;

        localWorldPosition = NawakTools.Rotate(localWorldPosition, 0);       //-transform.eulerAngles.y*Mathf.PI/180);

        Vector2 cellCenter = Vector2.zero;

        cellCenter = new Vector2((int)((localWorldPosition.x + s_tileSize) / (2 * s_tileSize))
                                 , (int)((localWorldPosition.z + s_tileSize) / (2 * s_tileSize)));
        Vector2 tileposition = new Vector2(((localWorldPosition.x + s_tileSize) / (2 * s_tileSize))
                                           , ((localWorldPosition.z + s_tileSize) / (2 * s_tileSize)));

        return((tileposition - cellCenter - Vector2.one * 0.5f).magnitude * Mathf.Sqrt(2));
    }
Example #2
0
    public static Point worldPositionToCellCenter(Vector3 worldPosition)
    {
        Vector3 localWorldPosition = worldPosition;

        localWorldPosition = NawakTools.Rotate(localWorldPosition, 0);       //-transform.eulerAngles.y*Mathf.PI/180);

        Vector2 cellCenter = Vector2.zero;

        cellCenter = new Vector2((int)((localWorldPosition.x + s_tileSize) / (2 * s_tileSize))
                                 , (int)((localWorldPosition.z + s_tileSize) / (2 * s_tileSize)));
        //Debug.Log(localWorldPosition+" : "+cellCenter);


        return(new Point(cellCenter));
    }
Example #3
0
    void SelectTilesInSquare(List <Vector3> list)
    {
        if (pathfindManager == null)
        {
            return;
        }
        if (Event.current.control == false)
        {
            m_selectecPoints.Clear();
        }

        foreach (PathfindNode node in pathfindManager.CompleteNodeArea.AllNodes)
        {
            Vector3 tileCenter = NawakTools.Rotate(NawakTools.cellToWorld(node.Point)
                                                   , (pathfindManager.transform.rotation.eulerAngles.y) * Mathf.PI / 180);
            float sign    = 0;
            bool  AddTile = true;
            for (int i = 0; i < list.Count; i++)
            {
                Vector3 v1        = list[i] - tileCenter;
                Vector3 v2        = list[(i + 1) % list.Count] - tileCenter;
                float   crossSign = Vector3.Cross(v1, v2).y;
                if (sign == 0)
                {
                    sign = crossSign;
                    continue;
                }
                if (sign * crossSign < 0)
                {
                    AddTile = false;
                }
            }
            if (AddTile)
            {
                m_selectecPoints.Add(node);
            }
        }
        OnSelect();
    }