{"componentChunkName":"component---src-components-mdx-custom-renderer-js","path":"/releases/2_01","result":{"data":{"mdx":{"id":"70b2a25e-1a55-5053-97bf-079958b5decf","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"v21\"\n  }, \"V2.1\"), mdx(\"h2\", {\n    \"id\": \"breaking-changes\"\n  }, \"Breaking Changes\"), mdx(\"p\", null, \"These changes may require you to update your rooms.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"AILookAtNode\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Now only connects to AI, Combatant, CreationObject, PatrolPoint, Player and Vector3 types.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It used to connect to anything but it doesn't work with any types besides these.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"InvalidPlayerVariableNode no longer uses the variable mesh.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The invalid player isn't a variable.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"LocalPlayerVariableNode no longer uses the variable mesh.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The local player isn't a variable.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"EqualsNode now works correctly in all cases.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"IsValidNode now returns correct result in all cases. Nodes now need special logic to work with invalid objects.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Many nodes which previously tried to work with invalid objects now return errors. Some of these used to null ref.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Unset player variables now correspond to invalid players.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All variables now have names to help distinguish them\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Unnamed variables will be updated to named ones.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Names are automatically generated when variables are placed or can be set manually.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Variables with the same name will always refer to the same value (they change together)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Variables with different names will always refer to different values (one may change without impacting the others)\")))), mdx(\"h2\", {\n    \"id\": \"deprecations\"\n  }, \"Deprecations\"), mdx(\"p\", null, \"Deprecated content will be removed in the next update\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Invalid Player\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Replaced with empty player variables\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object Add Tags\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Replaced with a version with the same name that works better with lists\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object to AI Path Point\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Replaced with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"From Creation Object\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object to AI\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Replaced with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"From Creation Object\"))))), mdx(\"h2\", {\n    \"id\": \"general-changes\"\n  }, \"General Changes\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Network heat has been tripled to 1 KB/s\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Control panels follow their objects correctly in more cases\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The prompt player node now allows body text\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Boolean logic nodes allow ports to be added\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Float comparisons now work\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Functions on Control panels and Circuit Boards now have padding between their ports\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Control panels now have a special built-in self port\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Control panels with no ports except self now have a condensed mesh\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A clever workaround for making inventions in beta rooms has been blocked\")), mdx(\"h2\", {\n    \"id\": \"new-nodes\"\n  }, \"New Nodes\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Acos\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Asin\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Atan\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Atan2\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Ceil\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Cos\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object Add Tags\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object Has Tags\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Creation Object Remove Tags\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Floor\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"From Creation Object\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Instance List<string>\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Log\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Round\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Set Element\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Sin\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Tan\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"To Creation Object\"))), mdx(\"h2\", {\n    \"id\": \"new-objects\"\n  }, \"New Objects\"), mdx(\"p\", null, \"We added these objects with this update. Look for nodes prefixed with their names in the palette!\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Button V2\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Trigger Volume V2\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Toggle Button V2\"))), mdx(\"h2\", {\n    \"id\": \"canny-issues\"\n  }, \"Canny Issues\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Trigonometric functions have been added\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/creative-tools/p/trigonometric-function-implementation-with-circuits-v2\"\n  }, \"https://recroom.canny.io/creative-tools/p/trigonometric-function-implementation-with-circuits-v2\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Button V2, Toggle Button V2, and Trigger Volume V2 have been added\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/creative-tools/p/circuits-v2-inputs-like-buttons-and-trigger-zones\"\n  }, \"https://recroom.canny.io/creative-tools/p/circuits-v2-inputs-like-buttons-and-trigger-zones\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Users can now change text on buttons with Circuits\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/creative-tools/p/the-ability-to-change-the-text-on-a-button\"\n  }, \"https://recroom.canny.io/creative-tools/p/the-ability-to-change-the-text-on-a-button\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Users can now remove tags with circuits\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/creative-tools/p/object-remove-tag\"\n  }, \"https://recroom.canny.io/creative-tools/p/object-remove-tag\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You can now get tags with cirucits\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/admin/board/creative-tools/p/object-get-tags-node\"\n  }, \"https://recroom.canny.io/admin/board/creative-tools/p/object-get-tags-node\")))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Trigger zones return lists of objects and players\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://recroom.canny.io/admin/board/creative-tools/p/list-of-playersobjects-inside-trigger-zone-output\"\n  }, \"https://recroom.canny.io/admin/board/creative-tools/p/list-of-playersobjects-inside-trigger-zone-output\"))))), mdx(\"h2\", {\n    \"id\": \"links\"\n  }, \"Links\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"a\", {\n    parentName: \"strong\",\n    \"href\": \"/releases/\"\n  }, \"<- Back to Releases\"))));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"demo":null,"difficulty":null,"summary":null,"tags":null,"title":"","type":null,"updated":null}}},"pageContext":{"id":"70b2a25e-1a55-5053-97bf-079958b5decf","fields":{"slug":"/releases/2_01"},"frontmatter":{"title":"","type":null,"order":null,"hidden":null,"hideChildren":null,"breadcrumbs":null},"headings":[{"value":"V2.1","depth":1}],"tableOfContents":{"items":[{"url":"#v21","title":"V2.1","items":[{"url":"#breaking-changes","title":"Breaking Changes"},{"url":"#deprecations","title":"Deprecations"},{"url":"#general-changes","title":"General Changes"},{"url":"#new-nodes","title":"New Nodes"},{"url":"#new-objects","title":"New Objects"},{"url":"#canny-issues","title":"Canny Issues"},{"url":"#links","title":"Links"}]}]},"parent":{"modifiedTime":"2021-11-28","relativePath":"releases/2_01.md"}}},"staticQueryHashes":["2814688963","32046230","338033027","598566803","811020565"]}