Esempio n. 1
0
        internal void SetPerpendiculars(Perimeter perpOne, Perimeter perpTwo, float step)
        {
            this.perpendicularOne = perpOne;
            this.perpendicularTwo = perpTwo;

            this.insideCornerOne = GetPoint(perpOne.edgeMid);
            this.insideCornerTwo = GetPoint(perpTwo.edgeMid);

            this.outsideCornerOne = this.insideCornerOne + ((this.edgeVector + perpOne.edgeVector) * step);
            this.outsideCornerTwo = this.insideCornerTwo + ((this.edgeVector + perpTwo.edgeVector) * step);
        }
Esempio n. 2
0
        internal void SetPerpendiculars(Perimeter perpOne, Perimeter perpTwo, float step)
        {
            this.perpendicularOne = perpOne;
            this.perpendicularTwo = perpTwo;

            this.insideCornerOne = GetPoint(perpOne.edgeMid);
            this.insideCornerTwo = GetPoint(perpTwo.edgeMid);

            this.outsideCornerOne = this.insideCornerOne + ((this.edgeVector + perpOne.edgeVector) * step);
            this.outsideCornerTwo = this.insideCornerTwo + ((this.edgeVector + perpTwo.edgeVector) * step);
        }
Esempio n. 3
0
        private void Initialize(CellMatrix matrix, GridSection[] gridSections)
        {
            //Setup the basic state
            _cellMatrix   = matrix;
            _gridSections = gridSections;
            _origin       = _cellMatrix.origin;
            _cellSize     = _cellMatrix.cellSize;
            _sizeX        = _cellMatrix.columns;
            _sizeZ        = _cellMatrix.rows;

            //Perimeters
            _left   = new Perimeter(Vector3.left, GetPerimeterEdge(Vector3.left, false), GetPerimeterEdge(Vector3.left, true));
            _right  = new Perimeter(Vector3.right, GetPerimeterEdge(Vector3.right, false), GetPerimeterEdge(Vector3.right, true));
            _top    = new Perimeter(Vector3.forward, GetPerimeterEdge(Vector3.forward, false), GetPerimeterEdge(Vector3.forward, true));
            _bottom = new Perimeter(Vector3.back, GetPerimeterEdge(Vector3.back, false), GetPerimeterEdge(Vector3.back, true));

            _left.SetPerpendiculars(_top, _bottom, _cellSize);
            _right.SetPerpendiculars(_bottom, _top, _cellSize);
            _top.SetPerpendiculars(_right, _left, _cellSize);
            _bottom.SetPerpendiculars(_left, _right, _cellSize);
        }
Esempio n. 4
0
 public PerimeterCell(Perimeter p)
 {
     perimeter = p;
     cell = null;
 }
Esempio n. 5
0
        private static bool CheckEdgeZ(Vector3 from, Vector3 to, Perimeter edgeZ, Perimeter edgeMinX, Perimeter edgeMaxX, out Vector3 crossingPoint)
        {
            if ((from.z < edgeZ.edge && to.z < edgeZ.edge) || (from.z > edgeZ.edge && to.z > edgeZ.edge) ||
                (from.x < edgeMinX.edge && to.x < edgeMinX.edge) || (from.x > edgeMaxX.edge && to.x > edgeMaxX.edge))
            {
                crossingPoint = Vector3.zero;
                return false;
            }

            var heading = to - from;

            var dzmin = edgeZ.edge - from.z;

            crossingPoint = new Vector3
            {
                x = from.x + ((heading.x / heading.z) * dzmin),
                z = edgeZ.edgeMid
            };

            return true;
        }
Esempio n. 6
0
        private static bool CheckEdgeX(Vector3 from, Vector3 to, Perimeter edgeX, Perimeter edgeMinZ, Perimeter edgeMaxZ, out Vector3 crossingPoint)
        {
            if ((from.x < edgeX.edge && to.x < edgeX.edge) || (from.x > edgeX.edge && to.x > edgeX.edge) ||
                (from.z < edgeMinZ.edge && to.z < edgeMinZ.edge) || (from.z > edgeMaxZ.edge && to.z > edgeMaxZ.edge))
            {
                crossingPoint = Vector3.zero;
                return false;
            }

            var heading = to - from;

            var dxmin = edgeX.edge - from.x;

            crossingPoint = new Vector3
            {
                x = edgeX.edgeMid,
                z = from.z + ((heading.z / heading.x) * dxmin)
            };

            return true;
        }