public IList<RotateableRegion> Rotate(AxisConstraint constraint, bool left, int clockwiseTurns)
        {
            AxisPivot pivot = _pivots.First(p => p.Axis == constraint.Axis);

            List<RotateableRegion> rotatedRegions = new List<RotateableRegion>();
            foreach(RotateableRegion region in _rotateableRegions)
            {
                if(constraint.Encapsulates(region.RotatedBounds(), left))
                {
                    rotatedRegions.Add(region);
                    region.Rotate(constraint, pivot, clockwiseTurns);
                }
            }

            return rotatedRegions;
        }
        private AxisConstraint UpdateMinMax(ref AxisConstraint? min, ref AxisConstraint? max, AxisConstraint constraint)
        {
            if((!min.HasValue) || (min.Value.Value > constraint.Value))
            {
                min = constraint;
            }

            if((!max.HasValue) || (max.Value.Value < constraint.Value))
            {
                max = constraint;
            }
            return constraint;
        }
 private bool HasPivot(AxisConstraint.AxisType axis)
 {
     return _pivots.Any(pivot => pivot.Axis == axis);
 }
示例#4
0
 public AxisPivot(AxisConstraint.AxisType axis, Vector3 pivot)
 {
     Axis = axis;
     Pivot = pivot;
 }
示例#5
0
 public void Rotate(AxisConstraint constraint, AxisPivot pivot, int clockwiseTurns)
 {
     Quaternion delta = constraint.Rotation(clockwiseTurns);
     _blockBounds.Rotate(delta, pivot);
 }