Example #1
0
        private XZOrientedQuad3D GetMirrorQuad()
        {
            const float      infiniteSize = 9999999.9999999f;
            XZOrientedQuad3D mirrorQuad   = new XZOrientedQuad3D(_mirrorTransformMatrix.Translation, Vector3.one);

            mirrorQuad.Rotation = Quaternion.AngleAxis(-90.0f, Vector3.forward);
            mirrorQuad.Rotation = _mirrorTransformMatrix.Rotation * mirrorQuad.Rotation;
            mirrorQuad.SetScale(new Vector3(RenderSettings.UseInfiniteHeight ? infiniteSize : RenderSettings.MirrorHeight, 1.0f, RenderSettings.UseInfiniteWidth ? infiniteSize : RenderSettings.MirrorWidth));
            return(mirrorQuad);
        }
        public void RenderGizmos(ObjectPlacementExtensionPlane extensionPlane)
        {
            ObjectPlacementExtensionPlaneRenderSettings renderSettings = extensionPlane.RenderSettings;
            XZOrientedQuad3D planeQuad = extensionPlane.PlaneQuad;

            planeQuad.SetScale(renderSettings.PlaneScale);

            // Note: Add a small offset to avoid Z wars when the extension plane sits on top of other objects.
            const float quadOffset = 0.005f;

            GizmosEx.RenderXZOrientedQuad(planeQuad, renderSettings.PlaneColor, quadOffset);
            GizmosEx.RenderXZOrientedQuadBorderLines(planeQuad, renderSettings.PlaneBorderLineColor, quadOffset);

            // Render the plane normals
            List <Vector3> quadCornerPoints  = planeQuad.GetCornerPoints();
            Vector3        offsetToEndOfLine = extensionPlane.Plane.normal * renderSettings.PlaneNormalLineLength;

            foreach (Vector3 quadCornerPoint in quadCornerPoints)
            {
                GizmosEx.RenderLine(quadCornerPoint, quadCornerPoint + offsetToEndOfLine, renderSettings.PlaneNormalLineColor);
            }
        }