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); } }