예제 #1
0
        private void UpdateMatrix()
        {
            _quadMatrix = ExtMatrix.GetMatrixTRS(_position, _rotation, _localScale);

            Vector3 size = Vector3.one;

            _p1 = _quadMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, 0, -size.z) * 0.5f));
            _p2 = _quadMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, 0, size.z) * 0.5f));
            _p3 = _quadMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, 0, size.z) * 0.5f));
            _p4 = _quadMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, 0, -size.z) * 0.5f));

            _v41 = (_p4 - _p1);
            _v21 = (_p2 - _p1);

            _lengthX = _v41.magnitude;
            _lengthY = _v21.magnitude;

            _v41Squared = _v41.LengthSquared();
            _v21Squared = _v21.LengthSquared();

            _uP1 = Vector3.Dot(-_v21, _p1);
            _uP2 = Vector3.Dot(-_v21, _p2);
            _vP1 = Vector3.Dot(-_v41, _p1);
            _vP4 = Vector3.Dot(-_v41, _p4);

            _plane.MoveShape(_position, _quadMatrix.UpFast());
            _planeAdjacent1.MoveShape(_p1, -_quadMatrix.ForwardFast());
            _planeAdjacent2.MoveShape(_p4, _quadMatrix.RightFast());
            _planeAdjacent3.MoveShape(_p3, _quadMatrix.ForwardFast());
            _planeAdjacent4.MoveShape(_p1, -_quadMatrix.RightFast());
        }
예제 #2
0
        public void DrawWithExtraSize(Color color, Vector3 extraSize, bool drawFace = false, bool drawPoints = false)
        {
#if UNITY_EDITOR
            Matrix4x4 cubeMatrix = ExtMatrix.GetMatrixTRS(_position, _rotation, _localScale + extraSize);

            Vector3 size = Vector3.one;

            Vector3 p1 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + ((-size) * 0.5f));
            Vector3 p2 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, -size.y, size.z) * 0.5f));
            Vector3 p3 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, size.z) * 0.5f));
            Vector3 p4 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, -size.z) * 0.5f));
            ExtDrawGuizmos.DrawLocalQuad(p1, p2, p3, p4, color, drawFace, drawPoints);
#endif
        }
예제 #3
0
        public void DrawWithExtraSize(Color color, Vector3 extraSize)
        {
#if UNITY_EDITOR
            Matrix4x4 cubeMatrix = ExtMatrix.GetMatrixTRS(_position, _rotation, _localScale + extraSize);

            Vector3 size = Vector3.one;

            Vector3 p1 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + ((-size) * 0.5f));
            Vector3 p2 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, -size.y, size.z) * 0.5f));
            Vector3 p3 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, size.z) * 0.5f));
            Vector3 p4 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, -size.z) * 0.5f));

            Vector3 p5 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, size.y, -size.z) * 0.5f));
            Vector3 p6 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, size.y, size.z) * 0.5f));
            Vector3 p7 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + ((size) * 0.5f));
            Vector3 p8 = cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, size.y, -size.z) * 0.5f));
            ExtDrawGuizmos.DrawLocalCube(p1, p2, p3, p4, p5, p6, p7, p8, color);
#endif
        }
예제 #4
0
        ///
        ///      6 ------------ 7
        ///    / |            / |
        ///  5 ------------ 8   |
        ///  |   |          |   |
        ///  |   |          |   |
        ///  |   |          |   |
        ///  |  2 ----------|-- 3
        ///  |/             | /
        ///  1 ------------ 4
        private void UpdateMatrix()
        {
            _cubeMatrix = ExtMatrix.GetMatrixTRS(_position, _rotation, _localScale);

            Vector3 size = Vector3.one;

            _p1 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + ((-size) * 0.5f));
            _p2 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, -size.y, size.z) * 0.5f));
            _p3 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, size.z) * 0.5f));
            _p4 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, -size.y, -size.z) * 0.5f));

            _p5 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, size.y, -size.z) * 0.5f));
            _p6 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(-size.x, size.y, size.z) * 0.5f));
            _p7 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + ((size) * 0.5f));
            _p8 = _cubeMatrix.MultiplyPoint3x4(Vector3.zero + (new Vector3(size.x, size.y, -size.z) * 0.5f));

            _v41 = (_p4 - _p1);
            _v21 = (_p2 - _p1);
            _v51 = (_p5 - _p1);

            _v41Squared = _v41.LengthSquared();
            _v21Squared = _v21.LengthSquared();
            _v51Squared = _v51.LengthSquared();

            _uP1 = Vector3.Dot(-_v21, _p1);
            _uP2 = Vector3.Dot(-_v21, _p2);
            _vP1 = Vector3.Dot(-_v41, _p1);
            _vP4 = Vector3.Dot(-_v41, _p4);
            _wP1 = Vector3.Dot(-_v51, _p1);
            _wP5 = Vector3.Dot(-_v51, _p5);

            _face1.MoveShape(_p1, _p5, _p4);
            _face2.MoveShape(_p4, _p8, _p3);
            _face3.MoveShape(_p5, _p6, _p8);
            _face4.MoveShape(_p2, _p1, _p3);
            _face5.MoveShape(_p2, _p6, _p1);
            _face6.MoveShape(_p3, _p7, _p2);
        }
예제 #5
0
 private void UpdateMatrix()
 {
     _planeMatrix = ExtMatrix.GetMatrixTRS(_position, _rotation, Vector3.one);
     _plane.MoveShape(_position, _planeMatrix.UpFast());
 }