Example #1
0
        public static Vector3 GetLocalPositionByGridPos(GridPos3D gridPos, Transform transform, int gridSize)
        {
            float x = gridPos.x * gridSize;
            float y = gridPos.y * gridSize;
            float z = gridPos.z * gridSize;

            return(new Vector3(x, y, z));
        }
Example #2
0
 public bool Contains(GridPos3D gp)
 {
     if (gp.x > x_max || gp.x < x_min || gp.z > z_max || gp.z < z_min)
     {
         return(false);
     }
     return(true);
 }
Example #3
0
 public override bool Equals(object obj)
 {
     if (obj != null)
     {
         GridPos3D target = (GridPos3D)obj;
         return(x == target.x && y == target.y && z == target.z);
     }
     else
     {
         return(false);
     }
 }
Example #4
0
        public static List <GridPos3D> TransformOccupiedPositions_XZ(GridPosR.Orientation orientation, List <GridPos3D> ori_OccupiedPositions)
        {
            List <GridPos3D> res = new List <GridPos3D>();

            foreach (GridPos3D oriGP in ori_OccupiedPositions)
            {
                GridPos   temp_rot = GridPos.RotateGridPos(new GridPos(oriGP.x, oriGP.z), orientation);
                GridPos3D final    = new GridPos3D(temp_rot.x, oriGP.y, temp_rot.z);
                res.Add(final);
            }

            return(res);
        }
Example #5
0
        public static GridPos3D GetNearestGPFromList(GridPos3D srcGP, List <GridPos3D> possibleGPs)
        {
            float     minDistance = float.MaxValue;
            GridPos3D nearestGP   = Zero;

            foreach (GridPos3D possibleGP in possibleGPs)
            {
                float dist = (srcGP - possibleGP).magnitude;
                if (dist < minDistance)
                {
                    minDistance = dist;
                    nearestGP   = possibleGP;
                }
            }

            return(nearestGP);
        }
Example #6
0
        public static BoundsInt GetBoundingRectFromListGridPos(this List <GridPos3D> offsetGPs, GridPos3D baseGP)
        {
            int X_min = int.MaxValue;
            int X_max = int.MinValue;
            int Y_min = int.MaxValue;
            int Y_max = int.MinValue;
            int Z_min = int.MaxValue;
            int Z_max = int.MinValue;

            foreach (GridPos3D offset in offsetGPs)
            {
                GridPos3D gp = offset + baseGP;
                if (gp.x < X_min)
                {
                    X_min = gp.x;
                }

                if (gp.x > X_max)
                {
                    X_max = gp.x;
                }

                if (gp.y < Y_min)
                {
                    Y_min = gp.y;
                }

                if (gp.y > Y_max)
                {
                    Y_max = gp.y;
                }

                if (gp.z < Z_min)
                {
                    Z_min = gp.z;
                }

                if (gp.z > Z_max)
                {
                    Z_max = gp.z;
                }
            }

            return(new BoundsInt(X_min, Y_min, Z_min, X_max - X_min + 1, Y_max - Y_min + 1, Z_max - Z_min + 1));
        }
Example #7
0
 public static void ApplyGridPosToLocalTrans(GridPos3D gridPos, Transform transform, int gridSize)
 {
     transform.localPosition = GetLocalPositionByGridPos(gridPos, transform, gridSize);
 }