{"id":1978,"date":"2021-07-15T13:52:24","date_gmt":"2021-07-15T17:52:24","guid":{"rendered":"https:\/\/blog.wholetomato.com\/?p=1978"},"modified":"2022-02-03T13:13:58","modified_gmt":"2022-02-03T17:13:58","slug":"unreal-engine-quality-of-life-in-visual-assist-2021-2","status":"publish","type":"post","link":"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/","title":{"rendered":"Unreal Engine \u00e2\u20ac\u02dcQuality Of Life\u00e2\u20ac\u2122 in Visual Assist 2021.2"},"content":{"rendered":"\n<p>The first two releases of Visual Assist this year contain some great Unreal Engine quality-of-life improvements you may want to take advantage of.<\/p>\n\n\n\n<p>While we\u00e2\u20ac\u2122ve always announced features in our changelog and release blogs, we\u00e2\u20ac\u2122re starting to blog in greater detail about some of what we change \u00e2\u20ac\u201d our <a rel=\"noreferrer noopener\" href=\"https:\/\/stage.wholetomato.com\/blog\/2020\/12\/17\/technical-deep-dive-reducing-memory-consumption-in-visual-assist-build-2393\/\" target=\"_blank\">December blog about reducing memory usage<\/a> started this \u00e2\u20ac\u201d and this time we\u00e2\u20ac\u2122ll dig a bit more into two changes improving using Unreal Engine with Visual Assist.<\/p>\n\n\n\n<p>This applies only to versions 2021.1 and 2021.2, the first two versions this year. If you\u00e2\u20ac\u2122re reading from the future, there\u00e2\u20ac\u2122s likely much more for UE than is described here!<\/p>\n\n\n\n<p>There are two notable items in these versions:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Improving parse times for Unreal Engine projects<\/li><li>Removing unwanted generated headers and symbols<\/li><\/ul>\n\n\n\n<p>These mean that your Unreal Engine projects should be fully usable with Visual Assist faster when you open them, and that Visual Assist only shows and uses methods and other symbols that you\u00e2\u20ac\u2122re really interested in.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\r\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Parse_Times\" >Parse Times<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Avoiding_Unnecessary_Parsing\" >Avoiding Unnecessary Parsing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Real-World_Performance_Improvements\" >Real-World Performance Improvements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Notes\" >Notes<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Avoiding_Parsing_UE-Generated_Files\" >Avoiding Parsing UE-Generated Files<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/stage.wholetomato.com\/blog\/unreal-engine-quality-of-life-in-visual-assist-2021-2\/#Unreal_Engine_with_Visual_Assist_20211_and_20212\" >Unreal Engine with Visual Assist 2021.1 and 2021.2<\/a><\/li><\/ul><\/nav><\/div>\r\n<h2 class=\"wp-block-heading\" id=\"parse-times\"><span class=\"ez-toc-section\" id=\"Parse_Times\"><\/span>Parse Times<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>When a solution is opened in Visual Studio, Visual Assist (VAX) parses that solution. This generates the databases of symbols and other data which VAX uses to be able to implement features like GoTo Related, extra syntax highlighting, parameter info, and so forth.<\/p>\n\n\n\n<p>Parsing can take time. Although VAX is not based around a C++ compiler (one of its strengths), parsing is analogous to compiling a project, and while you can use VAX right away, some features require that data before they will work. Unreal Engine solutions can be very large. Therefore, we spend a lot of thought on how to speed up parse time to make the time between opening a solution and having VAX fully functional be as short as possible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"avoiding-unnecessary-parsing\"><span class=\"ez-toc-section\" id=\"Avoiding_Unnecessary_Parsing\"><\/span>Avoiding Unnecessary Parsing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>This following is going to sound ridiculously simple, and it is. What\u00e2\u20ac\u2122s the best way to spend less time doing something? Not to do it.<\/p>\n\n\n\n<p>We do focus on optimisations; the parse engine is heavily multi-threaded; the database uses considerably less memory than it used to; and other techniques. But ultimately, the best way to reduce parse time is to do less parsing.<\/p>\n\n\n\n<p>Unreal Engine projects include plugins. These are additional libraries that add features to your game or project (in-editor or at runtime.) The UE editor lets you enable and disable these, so it\u00e2\u20ac\u2122s common to have several installed but only use a subset of them. Yet, the presence of plugins is a key item that makes parsing a UE project lengthier. We added an option to turn off parsing them.<\/p>\n\n\n\n<p>In 2021.1 we added an option to disable indexing these plugins. When off, the default, UE plugins were not parsed.<\/p>\n\n\n\n<p>However, we realised this was based on a flawed understanding: that if plugins are third-party (as plugins often are) then you may not need them to be parsed into VAX\u00e2\u20ac\u2122s memory: after all, we thought, you\u00e2\u20ac\u2122re unlikely to do a \u00e2\u20ac\u02dcfind references\u00e2\u20ac\u2122 on an internal method of a third-party library. Omitting them from being parsed would not affect day to day use of Visual Assist. But we got feedback that it was more common than we thought for plugins to be first-party: that is, for UE developers to move parts of their game or project\u00e2\u20ac\u2122s functionality into a plugin. That means that it was necessary to parse some plugins, and so a simple on\/off parse all-or-none toggle was not useful.<\/p>\n\n\n\n<p>In 2021.2 we expanded the setting so that Visual Assist can parse plugins that are genuinely used by your project, only. Today the \u00e2\u20ac\u02dcIndex Unreal Engine plugins\u00e2\u20ac\u2122 setting has three options for parsing plugins:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>None: don\u00e2\u20ac\u2122t parse anything in the Plugins folder. This reduces parse time the most<\/li><li>Referenced: parse only plugins references by the project, and referenced by default. Depending on how many plugins you have installed that are not used, this still reduces parse time. It is the recommended setting<\/li><li>All: parse all plugins; there is no reduction in parse time.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?ssl=1\"><img decoding=\"async\" data-attachment-id=\"1983\" data-permalink=\"https:\/\/stage.wholetomato.com\/blog\/visual-assist-unreal-engine-options-2021-2-ue-plugins\/\" data-orig-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?fit=1625%2C1259&amp;ssl=1\" data-orig-size=\"1625,1259\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visual-assist-unreal-engine-options-2021.2-ue-plugins\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?fit=300%2C232&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?fit=1024%2C793&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=457%2C353&#038;ssl=1\" alt=\"\" class=\"wp-image-1983\" width=\"457\" height=\"353\" srcset=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?w=1625&amp;ssl=1 1625w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=300%2C232&amp;ssl=1 300w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=1024%2C793&amp;ssl=1 1024w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=768%2C595&amp;ssl=1 768w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=1536%2C1190&amp;ssl=1 1536w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-ue-plugins.png?resize=360%2C279&amp;ssl=1 360w\" sizes=\"(max-width: 457px) 100vw, 457px\" data-recalc-dims=\"1\" \/><\/a><figcaption>Visual Assist Options dialog, showing the settings to index all, referenced, or no Unreal Engine plugins<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"real-world-performance-improvements\"><span class=\"ez-toc-section\" id=\"Real-World_Performance_Improvements\"><\/span>Real-World Performance Improvements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The amount of time saved by not parsing unused plugins depends on the complexity of your Unreal Engine solution and the specific machine on which Visual Studio runs, but some real-world measurements are as follows:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?ssl=1\"><img decoding=\"async\" data-attachment-id=\"1981\" data-permalink=\"https:\/\/stage.wholetomato.com\/blog\/visual-assist-ue-plugin-options-chart-annotated\/\" data-orig-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?fit=1734%2C1310&amp;ssl=1\" data-orig-size=\"1734,1310\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visual-assist-ue-plugin-options-chart-annotated\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?fit=300%2C227&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?fit=1024%2C774&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=771%2C582&#038;ssl=1\" alt=\"\" class=\"wp-image-1981\" width=\"771\" height=\"582\" srcset=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?w=1734&amp;ssl=1 1734w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=300%2C227&amp;ssl=1 300w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=1024%2C774&amp;ssl=1 1024w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=768%2C580&amp;ssl=1 768w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=1536%2C1160&amp;ssl=1 1536w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?resize=360%2C272&amp;ssl=1 360w\" sizes=\"(max-width: 771px) 100vw, 771px\" data-recalc-dims=\"1\" \/><\/a><figcaption>Time (minutes and seconds) to fully index an Unreal Engine project, when indexing UE plugins. The percentage annotations are the fraction the Referenced Plugins or No Plugins times are of the time indexing the same project with all plugins.<\/figcaption><\/figure><\/div>\n\n\n\n<p>The absolute values may vary but we expect the relative percentage to be broadly applicable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"notes\"><span class=\"ez-toc-section\" id=\"Notes\"><\/span>Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>If you open a file from a plugin folder which was not parsed (either not referenced, or the above setting was set to None), then you will see a notification message that the file was not parsed and Visual Assist won\u00e2\u20ac\u2122t provide your expected functionality for that file. This is shown only once, and won\u00e2\u20ac\u2122t be shown again until Visual Studio restarts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"avoiding-parsing-ue-generated-files\"><span class=\"ez-toc-section\" id=\"Avoiding_Parsing_UE-Generated_Files\"><\/span>Avoiding Parsing UE-Generated Files<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Saving a very useful change for last &#8212; there are many places Visual Assist shows you the symbols and files it\u00e2\u20ac\u2122s aware of. The two main windows are Open File In Solution which lists all headers (and other files), and Find Symbol will list every symbol in the database. Unreal Engine, however, generates header files, and these include generated symbols, neither of which are useful in practice when coding on your UE project in Visual Studio.<\/p>\n\n\n\n<p>Voila, a new setting, which means Visual Assist won\u00e2\u20ac\u2122t show *.generated.h files, and the Find Symbol dialog is not polluted with generated symbols either. The setting is called \u00e2\u20ac\u02dcIndex generated code\u00e2\u20ac\u2122 and is off by default. That is, the default is aimed at clean results within Visual Assist, to not index these generated files and store those generated symbols. You can always turn it back on if you want the old behaviour.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?ssl=1\"><img decoding=\"async\" data-attachment-id=\"1986\" data-permalink=\"https:\/\/stage.wholetomato.com\/blog\/visual-assist-unreal-engine-options-2021-2-generated-code\/\" data-orig-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?fit=1625%2C740&amp;ssl=1\" data-orig-size=\"1625,740\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"visual-assist-unreal-engine-options-2021.2-generated-code\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?fit=300%2C137&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?fit=1024%2C466&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=545%2C248&#038;ssl=1\" alt=\"\" class=\"wp-image-1986\" width=\"545\" height=\"248\" srcset=\"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?w=1625&amp;ssl=1 1625w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=300%2C137&amp;ssl=1 300w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=1024%2C466&amp;ssl=1 1024w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=768%2C350&amp;ssl=1 768w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=1536%2C699&amp;ssl=1 1536w, https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-unreal-engine-options-2021.2-generated-code.png?resize=360%2C164&amp;ssl=1 360w\" sizes=\"(max-width: 545px) 100vw, 545px\" data-recalc-dims=\"1\" \/><\/a><figcaption>Visual Assist Options dialog showing the checkbox to index generated code. By default it is off, which means the results shown within Unreal Engine will be cleaner<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"unreal-engine-with-visual-assist-2021-1-and-2021-2\"><span class=\"ez-toc-section\" id=\"Unreal_Engine_with_Visual_Assist_20211_and_20212\"><\/span>Unreal Engine with Visual Assist 2021.1 and 2021.2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The above covers only the first two releases this year, and we have more planned. However, the parsing speed improvements (including our followup for more granular parsing of plugins) and removing generated files and symbols by default should the general \u00e2\u20ac\u02dcquality of life\u00e2\u20ac\u2122 using Visual Assist with Unreal Engine. As always, feedback is welcome!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Two new features in Visual Assist mean that your Unreal Engine projects should be fully usable much faster when you open them, and that Visual Assist only shows and uses methods and other symbols that you\u00e2\u20ac\u2122re really interested in.<\/p>\n","protected":false},"author":157625651,"featured_media":1981,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":""},"categories":[103,672],"tags":[250493426,3965,23467,1453277],"class_list":["post-1978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-tips-and-tricks","tag-parse-time","tag-plugin","tag-ue","tag-unreal-engine"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/stage.wholetomato.com\/blog\/wp-content\/uploads\/2021\/07\/visual-assist-ue-plugin-options-chart-annotated.png?fit=1734%2C1310&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfhqii-vU","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/1978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/users\/157625651"}],"replies":[{"embeddable":true,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/comments?post=1978"}],"version-history":[{"count":9,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/1978\/revisions"}],"predecessor-version":[{"id":2111,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/posts\/1978\/revisions\/2111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/media\/1981"}],"wp:attachment":[{"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/media?parent=1978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/categories?post=1978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.wholetomato.com\/blog\/wp-json\/wp\/v2\/tags?post=1978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}