diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..ba715681f --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.lua linguist-language=Luau \ No newline at end of file diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 699152cce..307b4f26b 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -11,12 +11,12 @@ jobs: name: Check Actions runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - + - uses: actions/checkout@v4 + - name: Changelog check uses: Zomzog/changelog-checker@v1.3.0 with: - fileName: CHANGELOG.md + fileName: CHANGELOG.md noChangelogLabel: skip changelog checkNotification: Simple env: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28565bb94..8f7b8a027 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,24 +19,20 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - profile: minimal + uses: dtolnay/rust-toolchain@stable - name: Rust cache uses: Swatinem/rust-cache@v2 - name: Setup Aftman - uses: ok-nick/setup-aftman@v0.3.0 + uses: ok-nick/setup-aftman@v0.4.2 with: - version: 'v0.2.7' + version: 'v0.3.0' - name: Build run: cargo build --locked --verbose @@ -49,24 +45,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.70.0 - override: true - profile: minimal + uses: dtolnay/rust-toolchain@1.70.0 - name: Rust cache uses: Swatinem/rust-cache@v2 - name: Setup Aftman - uses: ok-nick/setup-aftman@v0.3.0 + uses: ok-nick/setup-aftman@v0.4.2 with: - version: 'v0.2.7' + version: 'v0.3.0' - name: Build run: cargo build --locked --verbose @@ -76,24 +68,22 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Install Rust - uses: actions-rs/toolchain@v1 + uses: dtolnay/rust-toolchain@stable with: - toolchain: stable - override: true components: rustfmt, clippy - name: Rust cache uses: Swatinem/rust-cache@v2 - name: Setup Aftman - uses: ok-nick/setup-aftman@v0.3.0 + uses: ok-nick/setup-aftman@v0.4.2 with: - version: 'v0.2.7' + version: 'v0.3.0' - name: Stylua run: stylua --check plugin/src diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5cc781b06..a1718858a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,51 +8,39 @@ jobs: create-release: name: Create Release runs-on: ubuntu-latest - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} steps: + - uses: actions/checkout@v4 - name: Create Release - id: create_release - uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: ${{ github.ref }} - draft: true - prerelease: false + run: | + gh release create ${{ github.ref_name }} --draft --verify-tag --title ${{ github.ref_name }} build-plugin: needs: ["create-release"] name: Build Roblox Studio Plugin runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Setup Aftman - uses: ok-nick/setup-aftman@v0.1.0 + uses: ok-nick/setup-aftman@v0.4.2 with: - token: ${{ secrets.GITHUB_TOKEN }} - trust-check: false - version: 'v0.2.6' + version: 'v0.3.0' - name: Build Plugin run: rojo build plugin --output Rojo.rbxm - name: Upload Plugin to Release - uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.create-release.outputs.upload_url }} - asset_path: Rojo.rbxm - asset_name: Rojo.rbxm - asset_content_type: application/octet-stream + run: | + gh release upload ${{ github.ref_name }} Rojo.rbxm - name: Upload Plugin to Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: Rojo.rbxm path: Rojo.rbxm @@ -89,31 +77,19 @@ jobs: env: BIN: rojo steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - - name: Get Version from Tag - shell: bash - # https://github.community/t/how-to-get-just-the-tag-name/16241/7#M1027 - run: | - echo "PROJECT_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV - echo "Version is: ${{ env.PROJECT_VERSION }}" - - name: Install Rust - uses: actions-rs/toolchain@v1 + uses: dtolnay/rust-toolchain@stable with: - toolchain: stable - target: ${{ matrix.target }} - override: true - profile: minimal + targets: ${{ matrix.target }} - name: Setup Aftman - uses: ok-nick/setup-aftman@v0.1.0 + uses: ok-nick/setup-aftman@v0.4.2 with: - token: ${{ secrets.GITHUB_TOKEN }} - trust-check: false - version: 'v0.2.6' + version: 'v0.3.0' - name: Build Release run: cargo build --release --locked --verbose --target ${{ matrix.target }} @@ -122,37 +98,34 @@ jobs: # easily. CARGO_TARGET_DIR: output - # On platforms that use OpenSSL, ensure it is statically linked to - # make binaries more portable. - OPENSSL_STATIC: 1 + - name: Generate Artifact Name + shell: bash + env: + TAG_NAME: ${{ github.ref_name }} + run: | + echo "ARTIFACT_NAME=$BIN-${TAG_NAME#v}-${{ matrix.label }}.zip" >> "$GITHUB_ENV" - - name: Create Release Archive + - name: Create Archive and Upload to Release shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | mkdir staging if [ "${{ matrix.host }}" = "windows" ]; then cp "output/${{ matrix.target }}/release/$BIN.exe" staging/ cd staging - 7z a ../release.zip * + 7z a ../$ARTIFACT_NAME * else cp "output/${{ matrix.target }}/release/$BIN" staging/ cd staging - zip ../release.zip * + zip ../$ARTIFACT_NAME * fi - - name: Upload Archive to Release - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.create-release.outputs.upload_url }} - asset_path: release.zip - asset_name: ${{ env.BIN }}-${{ env.PROJECT_VERSION }}-${{ matrix.label }}.zip - asset_content_type: application/octet-stream + gh release upload ${{ github.ref_name }} ../$ARTIFACT_NAME - name: Upload Archive to Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: ${{ env.BIN }}-${{ env.PROJECT_VERSION }}-${{ matrix.label }}.zip - path: release.zip \ No newline at end of file + path: ${{ env.ARTIFACT_NAME }} + name: ${{ env.ARTIFACT_NAME }} diff --git a/CHANGELOG.md b/CHANGELOG.md index a7118b0bd..ba9a0542f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,37 @@ # Rojo Changelog ## Unreleased Changes + * Added headless API for Studio companion plugins. ([#639]) -* Rojo now converts any line endings to LF, preventing spurious diffs when syncing Lua files on Windows ([#854]) -* Fixed Rojo plugin failing to connect when project contains certain unreadable properties ([#848]) +* Support for a `$schema` field in all special JSON files (`.project.json`, `.model.json`, and `.meta.json`) ([#974]) +* Projects may now manually link `Ref` properties together using `Attributes`. ([#843]) + This has two parts: using `id` or `$id` in JSON files or a `Rojo_Target` attribute, an Instance + is given an ID. Then, that ID may be used elsewhere in the project to point to an Instance + using an attribute named `Rojo_Target_PROP_NAME`, where `PROP_NAME` is the name of a property. + + As an example, here is a `model.json` for an ObjectValue that refers to itself: + + ```json + { + "id": "arbitrary string", + "attributes": { + "Rojo_Target_Value": "arbitrary string" + } + } + ``` + + This is a very rough implementation and the usage will become more ergonomic + over time. + +* Updated Undo/Redo history to be more robust ([#915]) * Added popout diff visualizer for table properties like Attributes and Tags ([#834]) * Updated Theme to use Studio colors ([#838]) +* Improved patch visualizer UX ([#883]) +* Added update notifications for newer compatible versions in the Studio plugin. ([#832]) * Added experimental setting for Auto Connect in playtests ([#840]) -* Fixed http error handling so Rojo can be used in Github Codespaces ([#847]) +* Improved settings UI ([#886]) +* `Open Scripts Externally` option can now be changed while syncing ([#911]) +* The sync reminder notification will now tell you what was last synced and when ([#987]) * Projects may now specify rules for syncing files as if they had a different file extension. ([#813]) This is specified via a new field on project files, `syncRules`: @@ -57,13 +81,57 @@ [#639]: https://github.com/rojo-rbx/rojo/pull/639 [#813]: https://github.com/rojo-rbx/rojo/pull/813 +[#832]: https://github.com/rojo-rbx/rojo/pull/832 [#834]: https://github.com/rojo-rbx/rojo/pull/834 [#838]: https://github.com/rojo-rbx/rojo/pull/838 [#840]: https://github.com/rojo-rbx/rojo/pull/840 -[#847]: https://github.com/rojo-rbx/rojo/pull/847 +[#843]: https://github.com/rojo-rbx/rojo/pull/843 +[#883]: https://github.com/rojo-rbx/rojo/pull/883 +[#886]: https://github.com/rojo-rbx/rojo/pull/886 +[#911]: https://github.com/rojo-rbx/rojo/pull/911 +[#915]: https://github.com/rojo-rbx/rojo/pull/915 +[#974]: https://github.com/rojo-rbx/rojo/pull/974 +[#987]: https://github.com/rojo-rbx/rojo/pull/987 + +## [7.4.3] - August 6th, 2024 +* Fixed issue with building binary files introduced in 7.4.2 +* Fixed `value of type nil cannot be converted to number` warning spam in output. [#955] + +[#955]: https://github.com/rojo-rbx/rojo/pull/955 + +## [7.4.2] - July 23, 2024 +* Added Never option to Confirmation ([#893]) +* Fixed removing trailing newlines ([#903]) +* Updated the internal property database, correcting an issue with `SurfaceAppearance.Color` that was reported [here][Surface_Appearance_Color_1] and [here][Surface_Appearance_Color_2] ([#948]) + +[#893]: https://github.com/rojo-rbx/rojo/pull/893 +[#903]: https://github.com/rojo-rbx/rojo/pull/903 +[#948]: https://github.com/rojo-rbx/rojo/pull/948 +[Surface_Appearance_Color_1]: https://devforum.roblox.com/t/jailbreak-custom-character-turned-shiny-black-no-texture/3075563 +[Surface_Appearance_Color_2]: https://devforum.roblox.com/t/surfaceappearance-not-displaying-correctly/3075588 + +## [7.4.1] - February 20, 2024 +* Made the `name` field optional on project files ([#870]) + + Files named `default.project.json` inherit the name of the folder they're in and all other projects + are named as expect (e.g. `foo.project.json` becomes an Instance named `foo`) + + There is no change in behavior if `name` is set. +* Fixed incorrect results when building model pivots ([#865]) +* Fixed incorrect results when serving model pivots ([#868]) +* Rojo now converts any line endings to LF, preventing spurious diffs when syncing Lua files on Windows ([#854]) +* Fixed Rojo plugin failing to connect when project contains certain unreadable properties ([#848]) +* Fixed various cases where patch visualizer would not display sync failures ([#845], [#844]) +* Fixed http error handling so Rojo can be used in Github Codespaces ([#847]) + [#848]: https://github.com/rojo-rbx/rojo/pull/848 +[#845]: https://github.com/rojo-rbx/rojo/pull/845 +[#844]: https://github.com/rojo-rbx/rojo/pull/844 +[#847]: https://github.com/rojo-rbx/rojo/pull/847 [#854]: https://github.com/rojo-rbx/rojo/pull/854 - +[#865]: https://github.com/rojo-rbx/rojo/pull/865 +[#868]: https://github.com/rojo-rbx/rojo/pull/868 +[#870]: https://github.com/rojo-rbx/rojo/pull/870 ## [7.4.0] - January 16, 2024 * Improved the visualization for array properties like Tags ([#829]) diff --git a/Cargo.lock b/Cargo.lock index 3e2556f20..908ff793a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,18 +19,18 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arrayref" @@ -84,9 +84,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bincode" @@ -105,9 +105,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "blake3" @@ -133,26 +133,26 @@ dependencies = [ [[package]] name = "bstr" -version = "1.6.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", - "regex-automata 0.3.9", + "regex-automata 0.4.6", "serde", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -168,12 +168,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723" [[package]] name = "cfg-if" @@ -208,11 +205,11 @@ dependencies = [ "bitflags 1.3.2", "clap_derive", "clap_lex", - "indexmap", + "indexmap 1.9.3", "once_cell", "strsim", "termcolor", - "textwrap 0.16.0", + "textwrap 0.16.1", ] [[package]] @@ -223,8 +220,8 @@ checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2 1.0.78", + "quote 1.0.35", "syn 1.0.109", ] @@ -239,14 +236,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", "lazy_static", "libc", - "windows-sys 0.45.0", + "windows-sys 0.52.0", ] [[package]] @@ -257,9 +254,9 @@ checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -267,15 +264,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -318,46 +315,37 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ - "cfg-if 1.0.0", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if 1.0.0", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if 1.0.0", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crypto-common" @@ -429,9 +417,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "embed-resource" @@ -475,24 +463,19 @@ dependencies = [ ] [[package]] -name = "errno" -version = "0.3.4" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -503,14 +486,14 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall", + "windows-sys 0.52.0", ] [[package]] @@ -519,35 +502,23 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "fs-err" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] [[package]] name = "fsevent" @@ -586,9 +557,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -601,9 +572,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -611,15 +582,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -628,38 +599,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -698,9 +669,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if 1.0.0", "libc", @@ -709,28 +680,28 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "globset" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" dependencies = [ "aho-corasick", "bstr", - "fnv", "log", - "regex", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", ] [[package]] name = "h2" -version = "0.3.21" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -738,7 +709,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 2.2.5", "slab", "tokio", "tokio-util", @@ -747,9 +718,9 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" @@ -757,6 +728,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + [[package]] name = "heck" version = "0.4.1" @@ -774,9 +751,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "htmlescape" @@ -786,9 +763,9 @@ checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" [[package]] name = "http" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -797,9 +774,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -826,9 +803,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -841,7 +818,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2", "tokio", "tower-service", "tracing", @@ -849,23 +826,24 @@ dependencies = [ ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "bytes", + "futures-util", + "http", "hyper", - "native-tls", + "rustls", "tokio", - "tokio-native-tls", + "tokio-rustls", ] [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -878,7 +856,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", ] [[package]] @@ -903,9 +891,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.33.0" +version = "1.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa511b2e298cd49b1856746f6bb73e17036bcd66b25f5e92cdcdbec9bd75686" +checksum = "0a7c22c4d34ef4788c351e971c52bfdfe7ea2766f8c5466bc175dd46e52ac22e" dependencies = [ "console", "lazy_static", @@ -928,9 +916,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" @@ -943,9 +931,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jod-thread" @@ -955,9 +943,9 @@ checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -986,9 +974,20 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.148" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.2", + "libc", + "redox_syscall", +] [[package]] name = "linked-hash-map" @@ -998,21 +997,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "loom" -version = "0.5.6" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +checksum = "7e045d70ddfbc984eacfa964ded019534e8f6cbf36f6410aee0ed5cefa5a9175" dependencies = [ "cfg-if 1.0.0", "generator", @@ -1058,22 +1057,13 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memofs" -version = "0.2.0" +version = "0.3.0" dependencies = [ "crossbeam-channel", "fs-err", @@ -1089,9 +1079,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] @@ -1117,9 +1107,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -1150,24 +1140,6 @@ dependencies = [ "ws2_32-sys", ] -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "net2" version = "0.2.39" @@ -1209,9 +1181,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -1222,24 +1194,24 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.9", "libc", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" @@ -1257,65 +1229,11 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "openssl" -version = "0.10.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" -dependencies = [ - "bitflags 2.4.0", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-src" -version = "300.1.5+3.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "overload" @@ -1331,15 +1249,15 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.4" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" +checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8" dependencies = [ "memchr", "thiserror", @@ -1348,9 +1266,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.4" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" +checksum = "b0d24f72393fd16ab6ac5738bc33cdb6a9aa73f8b902e8fe29cf4e67d7dd1026" dependencies = [ "pest", "pest_generator", @@ -1358,22 +1276,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.4" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" +checksum = "fdc17e2a6c7d0a492f0158d7a4bd66cc17280308bbaff78d5bef566dca35ab80" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] name = "pest_meta" -version = "2.7.4" +version = "2.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" +checksum = "934cd7631c050f4674352a6e835d5f6711ffbfb9345c2fc0107155ac495ae293" dependencies = [ "once_cell", "pest", @@ -1392,12 +1310,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - [[package]] name = "plotters" version = "0.3.5" @@ -1449,8 +1361,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2 1.0.78", + "quote 1.0.35", "syn 1.0.109", "version_check", ] @@ -1461,8 +1373,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2 1.0.78", + "quote 1.0.35", "version_check", ] @@ -1489,31 +1401,31 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" dependencies = [ "profiling-procmacros", - "tracy-client 0.16.3", + "tracy-client", ] [[package]] name = "profiling-procmacros" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb156a45b6b9fe8027497422179fb65afc84d36707a7ca98297bf06bccb8d43f" +checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ - "quote 1.0.33", - "syn 2.0.37", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] @@ -1527,11 +1439,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ - "proc-macro2 1.0.67", + "proc-macro2 1.0.78", ] [[package]] @@ -1566,9 +1478,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" dependencies = [ "either", "rayon-core", @@ -1576,9 +1488,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1586,9 +1498,9 @@ dependencies = [ [[package]] name = "rbx_binary" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6314dd6bf5c21d0598cdb53cf5d241aa643ba41da8b8abf7402b4a35096f03f6" +checksum = "7b85057e8ff75a1ce99248200c4b3c7b481a3d52f921f1053ecd67921dcc7930" dependencies = [ "log", "lz4", @@ -1601,9 +1513,9 @@ dependencies = [ [[package]] name = "rbx_dom_weak" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b67b56bac99849c2e3c57547b036927f71c57cf7f4d900d04e3e4ee774ec316" +checksum = "fcd2a17d09e46af0805f8b311a926402172b97e8d9388745c9adf8f448901841" dependencies = [ "rbx_types", "serde", @@ -1611,9 +1523,9 @@ dependencies = [ [[package]] name = "rbx_reflection" -version = "4.5.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d41509c991b53a7276a746a795eae2b9204f398164920f61976995b47fe1722" +checksum = "8118ac6021d700e8debe324af6b40ecfd2cef270a00247849dbdfeebb0802677" dependencies = [ "rbx_types", "serde", @@ -1622,9 +1534,9 @@ dependencies = [ [[package]] name = "rbx_reflection_database" -version = "0.2.10+roblox-607" +version = "0.2.12+roblox-638" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12e20c06fa41f7aadc79005c8354f592b2c2f4d0c61e1080ed5718dafc30aea0" +checksum = "0e29381d675420e841f8c02db5755cbb2545ed3e13f56c539546dc58702b512a" dependencies = [ "lazy_static", "rbx_reflection", @@ -1634,9 +1546,9 @@ dependencies = [ [[package]] name = "rbx_types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca23bfd469d067d81ef14f65fe09aeddc25abcf576a889d1a7664fe021cf18c" +checksum = "e30f49b2a3bb667e4074ba73c2dfb8ca0873f610b448ccf318a240acfdec6c73" dependencies = [ "base64 0.13.1", "bitflags 1.3.2", @@ -1649,9 +1561,9 @@ dependencies = [ [[package]] name = "rbx_xml" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c03f95500961c32340791d1fabd4587f6873bdbff077ecca6ae32db7960dea" +checksum = "2b14b3027bc9ccd82e2fc854c8bcd25ed58318e570c355bf2cf63df9cdbd5ba8" dependencies = [ "base64 0.13.1", "log", @@ -1663,43 +1575,34 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.9.6" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.9", - "regex-syntax 0.7.5", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", ] [[package]] @@ -1713,13 +1616,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -1730,17 +1633,17 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ - "base64 0.21.4", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -1749,29 +1652,47 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-tls", + "hyper-rustls", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", + "rustls", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", - "tokio-native-tls", + "tokio-rustls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots", "winreg 0.50.0", ] +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + [[package]] name = "ritz" version = "0.1.0" @@ -1831,7 +1752,7 @@ dependencies = [ [[package]] name = "rojo" -version = "7.4.0" +version = "7.4.4" dependencies = [ "anyhow", "backtrace", @@ -1876,7 +1797,6 @@ dependencies = [ "thiserror", "tokio", "toml", - "tracy-client 0.13.2", "uuid", "walkdir", "winreg 0.10.1", @@ -1907,15 +1827,46 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.20" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -1926,9 +1877,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "same-file" @@ -1939,15 +1890,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys 0.48.0", -] - [[package]] name = "scoped-tls" version = "1.0.1" @@ -1955,45 +1897,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.1" +name = "sct" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "core-foundation-sys", - "libc", + "ring", + "untrusted", ] [[package]] name = "semver" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -2010,20 +1933,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -2048,7 +1971,7 @@ version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", + "indexmap 1.9.3", "ryu", "serde", "yaml-rust", @@ -2067,18 +1990,18 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "similar" -version = "2.2.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" +checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" [[package]] name = "slab" @@ -2091,9 +2014,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "snax" @@ -2106,23 +2029,19 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "winapi 0.3.9", + "windows-sys 0.52.0", ] [[package]] -name = "socket2" -version = "0.5.4" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" -dependencies = [ - "libc", - "windows-sys 0.48.0", -] +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "strsim" @@ -2136,22 +2055,28 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2 1.0.78", + "quote 1.0.35", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.37" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", + "proc-macro2 1.0.78", + "quote 1.0.35", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2175,22 +2100,21 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall 0.3.5", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -2206,35 +2130,35 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if 1.0.0", "once_cell", @@ -2267,35 +2191,35 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", "libc", - "mio 0.8.8", + "mio 0.8.11", "num_cpus", "pin-project-lite", - "socket2 0.5.4", + "socket2", "windows-sys 0.48.0", ] [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "tokio-rustls" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "native-tls", + "rustls", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -2322,11 +2246,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2334,20 +2257,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -2355,20 +2278,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -2384,49 +2307,29 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.13.2" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ebfe7a24c18b5ba86d8920c124b41b942352f863fbe0c84d3d63428fa1860f" +checksum = "59fb931a64ff88984f86d3e9bcd1ae8843aa7fe44dd0f8097527bc172351741d" dependencies = [ "loom", "once_cell", - "tracy-client-sys 0.17.1", -] - -[[package]] -name = "tracy-client" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03684af8fb393cc7903210d868e4cb9f5c1e156737be38f52c4217fb21b86bf6" -dependencies = [ - "loom", - "once_cell", - "tracy-client-sys 0.21.2", + "tracy-client-sys", ] [[package]] name = "tracy-client-sys" -version = "0.17.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "178d021455e83078bb38c00b70046b95117ef0a0312cbef925f426d833d11c79" -dependencies = [ - "cc", -] - -[[package]] -name = "tracy-client-sys" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb915ea3af048554640d76dd6f1492589a6401a41a30d789b983c1ec280455a" +checksum = "9d104d610dfa9dd154535102cc9c6164ae1fa37842bc2d9e83f9ac82b0ae0882" dependencies = [ "cc", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -2442,9 +2345,9 @@ checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -2454,9 +2357,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -2473,11 +2376,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -2486,9 +2395,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom", "serde", @@ -2500,12 +2409,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version_check" version = "0.9.4" @@ -2534,9 +2437,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2559,9 +2462,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2569,24 +2472,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2596,43 +2499,49 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ - "quote 1.0.33", + "quote 1.0.35", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ - "proc-macro2 1.0.67", - "quote 1.0.33", - "syn 2.0.37", + "proc-macro2 1.0.78", + "quote 1.0.35", + "syn 2.0.52", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "winapi" version = "0.2.8" @@ -2685,15 +2594,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -2704,18 +2604,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.4", ] [[package]] @@ -2734,10 +2628,19 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" +name = "windows-targets" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] [[package]] name = "windows_aarch64_gnullvm" @@ -2746,10 +2649,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" +name = "windows_aarch64_gnullvm" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -2758,10 +2661,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] -name = "windows_i686_gnu" -version = "0.42.2" +name = "windows_aarch64_msvc" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -2770,10 +2673,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] -name = "windows_i686_msvc" -version = "0.42.2" +name = "windows_i686_gnu" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -2782,10 +2685,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" +name = "windows_i686_msvc" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -2794,10 +2697,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" +name = "windows_x86_64_gnu" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -2806,10 +2709,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" +name = "windows_x86_64_gnullvm" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -2817,6 +2720,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + [[package]] name = "winreg" version = "0.6.2" diff --git a/Cargo.toml b/Cargo.toml index 0b5ae9e68..700f6e47b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rojo" -version = "7.4.0" +version = "7.4.4" rust-version = "1.70.0" authors = ["Lucien Greathouse "] description = "Enables professional-grade development tools for Roblox developers" @@ -26,7 +26,9 @@ default = [] # Enable this feature to live-reload assets from the web UI. dev_live_assets = [] -profile-with-tracy = ["profiling/profile-with-tracy", "tracy-client"] +# Run Rojo with this feature to open a Tracy session. +# Currently uses protocol v63, last supported in Tracy 0.9.1. +profile-with-tracy = ["profiling/profile-with-tracy"] [workspace] members = ["crates/*"] @@ -40,7 +42,7 @@ name = "build" harness = false [dependencies] -memofs = { version = "0.2.0", path = "crates/memofs" } +memofs = { version = "0.3.0", path = "crates/memofs" } # These dependencies can be uncommented when working on rbx-dom simultaneously # rbx_binary = { path = "../rbx-dom/rbx_binary" } @@ -49,67 +51,65 @@ memofs = { version = "0.2.0", path = "crates/memofs" } # rbx_reflection_database = { path = "../rbx-dom/rbx_reflection_database" } # rbx_xml = { path = "../rbx-dom/rbx_xml" } -rbx_binary = "0.7.4" -rbx_dom_weak = "2.7.0" -rbx_reflection = "4.5.0" -rbx_reflection_database = "0.2.10" -rbx_xml = "0.13.3" +rbx_binary = "0.7.7" +rbx_dom_weak = "2.9.0" +rbx_reflection = "4.7.0" +rbx_reflection_database = "0.2.12" +rbx_xml = "0.13.5" -anyhow = "1.0.44" -backtrace = "0.3.61" +anyhow = "1.0.80" +backtrace = "0.3.69" bincode = "1.3.3" -crossbeam-channel = "0.5.1" -csv = "1.1.6" -env_logger = "0.9.0" -fs-err = "2.6.0" -futures = "0.3.17" -globset = "0.4.8" +crossbeam-channel = "0.5.12" +csv = "1.3.0" +env_logger = "0.9.3" +fs-err = "2.11.0" +futures = "0.3.30" +globset = "0.4.14" humantime = "2.1.0" -hyper = { version = "0.14.13", features = ["server", "tcp", "http1"] } +hyper = { version = "0.14.28", features = ["server", "tcp", "http1"] } jod-thread = "0.1.2" -log = "0.4.14" -maplit = "1.0.2" -num_cpus = "1.15.0" -opener = "0.5.0" -rayon = "1.7.0" -reqwest = { version = "0.11.10", features = [ +log = "0.4.21" +num_cpus = "1.16.0" +opener = "0.5.2" +rayon = "1.9.0" +reqwest = { version = "0.11.24", default-features = false, features = [ "blocking", "json", - "native-tls-vendored", + "rustls-tls", ] } ritz = "0.1.0" roblox_install = "1.0.0" -serde = { version = "1.0.130", features = ["derive", "rc"] } -serde_json = "1.0.68" -toml = "0.5.9" -termcolor = "1.1.2" -thiserror = "1.0.30" -tokio = { version = "1.12.0", features = ["rt", "rt-multi-thread"] } -uuid = { version = "1.0.0", features = ["v4", "serde"] } -clap = { version = "3.1.18", features = ["derive"] } -profiling = "1.0.6" -tracy-client = { version = "0.13.2", optional = true } +serde = { version = "1.0.197", features = ["derive", "rc"] } +serde_json = "1.0.114" +toml = "0.5.11" +termcolor = "1.4.1" +thiserror = "1.0.57" +tokio = { version = "1.36.0", features = ["rt", "rt-multi-thread"] } +uuid = { version = "1.7.0", features = ["v4", "serde"] } +clap = { version = "3.2.25", features = ["derive"] } +profiling = "1.0.15" [target.'cfg(windows)'.dependencies] winreg = "0.10.1" [build-dependencies] -memofs = { version = "0.2.0", path = "crates/memofs" } +memofs = { version = "0.3.0", path = "crates/memofs" } -embed-resource = "1.6.4" -anyhow = "1.0.44" +embed-resource = "1.8.0" +anyhow = "1.0.80" bincode = "1.3.3" -fs-err = "2.6.0" +fs-err = "2.11.0" maplit = "1.0.2" -semver = "1.0.19" +semver = "1.0.22" [dev-dependencies] rojo-insta-ext = { path = "crates/rojo-insta-ext" } -criterion = "0.3.5" -insta = { version = "1.8.0", features = ["redactions", "yaml"] } -paste = "1.0.5" -pretty_assertions = "1.2.1" -serde_yaml = "0.8.21" -tempfile = "3.2.0" -walkdir = "2.3.2" +criterion = "0.3.6" +insta = { version = "1.36.1", features = ["redactions", "yaml"] } +paste = "1.0.14" +pretty_assertions = "1.4.0" +serde_yaml = "0.8.26" +tempfile = "3.10.1" +walkdir = "2.5.0" diff --git a/README.md b/README.md index bbdeba30a..bb4effcf9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
- Rojo + Rojo
 
@@ -43,4 +43,4 @@ Pull requests are welcome! Rojo supports Rust 1.70.0 and newer. The minimum supported version of Rust is based on the latest versions of the dependencies that Rojo has. ## License -Rojo is available under the terms of the Mozilla Public License, Version 2.0. See [LICENSE.txt](LICENSE.txt) for details. \ No newline at end of file +Rojo is available under the terms of the Mozilla Public License, Version 2.0. See [LICENSE.txt](LICENSE.txt) for details. diff --git a/aftman.toml b/aftman.toml index 5273b6d07..8de6c658a 100644 --- a/aftman.toml +++ b/aftman.toml @@ -1,5 +1,5 @@ [tools] -rojo = "rojo-rbx/rojo@7.3.0" -selene = "Kampfkarren/selene@0.26.1" -stylua = "JohnnyMorganz/stylua@0.18.2" +rojo = "rojo-rbx/rojo@7.4.1" +selene = "Kampfkarren/selene@0.27.1" +stylua = "JohnnyMorganz/stylua@0.20.0" run-in-roblox = "rojo-rbx/run-in-roblox@0.3.0" diff --git a/assets/icon-32.png b/assets/brand_images/icon-32.png similarity index 100% rename from assets/icon-32.png rename to assets/brand_images/icon-32.png diff --git a/assets/icon-link-32.png b/assets/brand_images/icon-link-32.png similarity index 100% rename from assets/icon-link-32.png rename to assets/brand_images/icon-link-32.png diff --git a/assets/icon-warn-32.png b/assets/brand_images/icon-warn-32.png similarity index 100% rename from assets/icon-warn-32.png rename to assets/brand_images/icon-warn-32.png diff --git a/assets/logo-512.png b/assets/brand_images/logo-512.png similarity index 100% rename from assets/logo-512.png rename to assets/brand_images/logo-512.png diff --git a/assets/images/back.png b/assets/images/icons/back.png similarity index 100% rename from assets/images/back.png rename to assets/images/icons/back.png diff --git a/assets/images/back.svg b/assets/images/icons/back.svg similarity index 100% rename from assets/images/back.svg rename to assets/images/icons/back.svg diff --git a/assets/images/close.png b/assets/images/icons/close.png similarity index 100% rename from assets/images/close.png rename to assets/images/icons/close.png diff --git a/assets/images/close.svg b/assets/images/icons/close.svg similarity index 100% rename from assets/images/close.svg rename to assets/images/icons/close.svg diff --git a/assets/images/icons/debug.png b/assets/images/icons/debug.png new file mode 100644 index 000000000..b2217f0cc Binary files /dev/null and b/assets/images/icons/debug.png differ diff --git a/assets/images/icons/expand.png b/assets/images/icons/expand.png new file mode 100644 index 000000000..fcf561dcd Binary files /dev/null and b/assets/images/icons/expand.png differ diff --git a/assets/images/icons/reset.png b/assets/images/icons/reset.png new file mode 100644 index 000000000..802e430a1 Binary files /dev/null and b/assets/images/icons/reset.png differ diff --git a/assets/images/icons/warning.png b/assets/images/icons/warning.png new file mode 100644 index 000000000..79d457df0 Binary files /dev/null and b/assets/images/icons/warning.png differ diff --git a/assets/round-rect-4px-radius.png b/assets/images/round-rect-4px-radius.png similarity index 100% rename from assets/round-rect-4px-radius.png rename to assets/images/round-rect-4px-radius.png diff --git a/assets/images/syncsuccess.png b/assets/images/syncsuccess.png new file mode 100644 index 000000000..74958cc13 Binary files /dev/null and b/assets/images/syncsuccess.png differ diff --git a/assets/images/syncwarning.png b/assets/images/syncwarning.png new file mode 100644 index 000000000..eafb93d36 Binary files /dev/null and b/assets/images/syncwarning.png differ diff --git a/crates/memofs/CHANGELOG.md b/crates/memofs/CHANGELOG.md index d678f8c9d..44c3aa507 100644 --- a/crates/memofs/CHANGELOG.md +++ b/crates/memofs/CHANGELOG.md @@ -1,6 +1,8 @@ # memofs Changelog ## Unreleased Changes + +## 0.3.0 (2024-03-15) * Changed `StdBackend` file watching component to use minimal recursive watches. [#830] * Added `Vfs::read_to_string` and `Vfs::read_to_string_lf_normalized` [#854] diff --git a/crates/memofs/Cargo.toml b/crates/memofs/Cargo.toml index 5cf5a7334..57633ae4f 100644 --- a/crates/memofs/Cargo.toml +++ b/crates/memofs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "memofs" description = "Virtual filesystem with configurable backends." -version = "0.2.0" +version = "0.3.0" authors = ["Lucien Greathouse "] edition = "2018" readme = "README.md" @@ -11,7 +11,7 @@ homepage = "https://github.com/rojo-rbx/rojo/tree/master/memofs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -crossbeam-channel = "0.5.1" -fs-err = "2.3.0" -notify = "4.0.15" -serde = { version = "1.0", features = ["derive"] } +crossbeam-channel = "0.5.12" +fs-err = "2.11.0" +notify = "4.0.17" +serde = { version = "1.0.197", features = ["derive"] } diff --git a/crates/memofs/src/lib.rs b/crates/memofs/src/lib.rs index 6d41c853b..7a348ff60 100644 --- a/crates/memofs/src/lib.rs +++ b/crates/memofs/src/lib.rs @@ -300,7 +300,7 @@ impl Vfs { let path = path.as_ref(); let contents = self.inner.lock().unwrap().read_to_string(path)?; - Ok(contents.lines().collect::>().join("\n").into()) + Ok(contents.replace("\r\n", "\n").into()) } /// Write a file to the VFS and the underlying backend. @@ -473,3 +473,23 @@ impl VfsLock<'_> { self.inner.commit_event(event) } } + +#[cfg(test)] +mod test { + use crate::{InMemoryFs, Vfs, VfsSnapshot}; + + /// https://github.com/rojo-rbx/rojo/issues/899 + #[test] + fn read_to_string_lf_normalized_keeps_trailing_newline() { + let mut imfs = InMemoryFs::new(); + imfs.load_snapshot("test", VfsSnapshot::file("bar\r\nfoo\r\n\r\n")) + .unwrap(); + + let vfs = Vfs::new(imfs); + + assert_eq!( + vfs.read_to_string_lf_normalized("test").unwrap().as_str(), + "bar\nfoo\n\n" + ); + } +} diff --git a/crates/rojo-insta-ext/Cargo.toml b/crates/rojo-insta-ext/Cargo.toml index 4471c4acc..55a864991 100644 --- a/crates/rojo-insta-ext/Cargo.toml +++ b/crates/rojo-insta-ext/Cargo.toml @@ -6,5 +6,5 @@ edition = "2018" publish = false [dependencies] -serde = "1.0.99" -serde_yaml = "0.8.9" +serde = "1.0.197" +serde_yaml = "0.8.26" diff --git a/plugin/Version.txt b/plugin/Version.txt index b61671799..c74107f79 100644 --- a/plugin/Version.txt +++ b/plugin/Version.txt @@ -1 +1 @@ -7.4.0 \ No newline at end of file +7.4.4 \ No newline at end of file diff --git a/plugin/rbx_dom_lua/EncodedValue.lua b/plugin/rbx_dom_lua/EncodedValue.lua index e9dd0edd4..f2e9e3434 100644 --- a/plugin/rbx_dom_lua/EncodedValue.lua +++ b/plugin/rbx_dom_lua/EncodedValue.lua @@ -493,9 +493,32 @@ types = { }, } +types.OptionalCFrame = { + fromPod = function(pod) + if pod == nil then + return nil + else + return types.CFrame.fromPod(pod) + end + end, + + toPod = function(roblox) + if roblox == nil then + return nil + else + return types.CFrame.toPod(roblox) + end + end, +} + function EncodedValue.decode(encodedValue) local ty, value = next(encodedValue) + if ty == nil then + -- If the encoded pair is empty, assume it is an unoccupied optional value + return true, nil + end + local typeImpl = types[ty] if typeImpl == nil then return false, "Couldn't decode value " .. tostring(ty) diff --git a/plugin/rbx_dom_lua/allValues.json b/plugin/rbx_dom_lua/allValues.json index b233ab25b..9b07d7bf0 100644 --- a/plugin/rbx_dom_lua/allValues.json +++ b/plugin/rbx_dom_lua/allValues.json @@ -370,6 +370,41 @@ }, "ty": "NumberSequence" }, + "OptionalCFrame-None": { + "value": { + "OptionalCFrame": null + }, + "ty": "OptionalCFrame" + }, + "OptionalCFrame-Some": { + "value": { + "OptionalCFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + }, + "ty": "OptionalCFrame" + }, "PhysicalProperties-Custom": { "value": { "PhysicalProperties": { diff --git a/plugin/rbx_dom_lua/customProperties.lua b/plugin/rbx_dom_lua/customProperties.lua index 072db9ef0..d8c12d5a1 100644 --- a/plugin/rbx_dom_lua/customProperties.lua +++ b/plugin/rbx_dom_lua/customProperties.lua @@ -26,6 +26,21 @@ local TERRAIN_MATERIAL_COLORS = { Enum.Material.Pavement, } +local function isAttributeNameValid(attributeName) + -- For SetAttribute to succeed, the attribute name must be less than or + -- equal to 100 characters... + return #attributeName <= 100 + -- ...and must only contain alphanumeric characters, periods, hyphens, + -- underscores, or forward slashes. + and attributeName:match("[^%w%.%-_/]") == nil +end + +local function isAttributeNameReserved(attributeName) + -- For SetAttribute to succeed, attribute names must not use the RBX + -- prefix, which is reserved by Roblox. + return attributeName:sub(1, 3) == "RBX" +end + -- Defines how to read and write properties that aren't directly scriptable. -- -- The reflection database refers to these as having scriptability = "Custom" @@ -40,26 +55,33 @@ return { local didAllWritesSucceed = true for attributeName, attributeValue in pairs(value) do - local isNameValid = - -- For our SetAttribute to succeed, the attribute name must be - -- less than or equal to 100 characters... - #attributeName <= 100 - -- ...must only contain alphanumeric characters, periods, hyphens, - -- underscores, or forward slashes... - and attributeName:match("[^%w%.%-_/]") == nil - -- ... and must not use the RBX prefix, which is reserved by Roblox. - and attributeName:sub(1, 3) ~= "RBX" - - if isNameValid then - instance:SetAttribute(attributeName, attributeValue) - else + if isAttributeNameReserved(attributeName) then + -- If the attribute name is reserved, then we don't + -- really care about reporting any failures about + -- it. + continue + end + + if not isAttributeNameValid(attributeName) then didAllWritesSucceed = false + continue end + + instance:SetAttribute(attributeName, attributeValue) end - for key in pairs(existing) do - if value[key] == nil then - instance:SetAttribute(key, nil) + for existingAttributeName in pairs(existing) do + if isAttributeNameReserved(existingAttributeName) then + continue + end + + if not isAttributeNameValid(existingAttributeName) then + didAllWritesSucceed = false + continue + end + + if value[existingAttributeName] == nil then + instance:SetAttribute(existingAttributeName, nil) end end @@ -111,6 +133,19 @@ return { return true, instance:ScaleTo(value) end, }, + WorldPivotData = { + read = function(instance) + return true, instance.WorldPivot + end, + write = function(instance, _, value) + if value == nil then + return true, nil + else + instance.WorldPivot = value + return true + end + end, + }, }, Terrain = { MaterialColors = { diff --git a/plugin/rbx_dom_lua/database.json b/plugin/rbx_dom_lua/database.json index 81424b27e..fa0a829ea 100644 --- a/plugin/rbx_dom_lua/database.json +++ b/plugin/rbx_dom_lua/database.json @@ -1,9 +1,9 @@ { "Version": [ 0, - 607, - 0, - 6070550 + 638, + 1, + 6380615 ], "Classes": { "Accessory": { @@ -29,6 +29,9 @@ "AccessoryType": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "AttachmentPoint": { "CFrame": { "position": [ @@ -64,11 +67,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -144,6 +153,19 @@ } } }, + "Position": { + "Name": "Position", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Puffiness": { "Name": "Puffiness", "Scriptability": "ReadWrite", @@ -156,12 +178,41 @@ "Serialization": "Serializes" } } + }, + "Rotation": { + "Name": "Rotation", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Scale": { + "Name": "Scale", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { "AccessoryType": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "AssetId": { "Int64": 0 }, @@ -174,20 +225,47 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsLayered": { "Bool": false }, "Order": { "Int32": 0 }, + "Position": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, "Puffiness": { "Float32": 1.0 }, + "Rotation": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "Scale": { + "Vector3": [ + 1.0, + 1.0, + 1.0 + ] + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -200,7 +278,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Accoutrement": { "Name": "Accoutrement", @@ -302,6 +390,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AttachmentPoint": { "CFrame": { "position": [ @@ -337,11 +428,38 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AchievementService": { + "Name": "AchievementService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -351,6 +469,9 @@ "Superclass": "Model", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -360,6 +481,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -411,6 +535,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -500,7 +627,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AdPortal": { "Name": "AdPortal", @@ -558,7 +695,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AdService": { "Name": "AdService", @@ -568,14 +715,34 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AdvancedDragger": { "Name": "AdvancedDragger", "Tags": [], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AirController": { "Name": "AirController", @@ -691,6 +858,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -709,6 +879,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaintainAngularMomentum": { "Bool": true }, @@ -732,6 +905,9 @@ }, "TurnSpeedFactor": { "Float32": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -907,6 +1083,9 @@ "AlignType": { "Enum": 5 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -948,6 +1127,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxAngularVelocity": { "Float32": null }, @@ -975,6 +1157,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -1133,6 +1318,9 @@ "ApplyAtCenterOfMass": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1154,6 +1342,9 @@ "ForceRelativeTo": { "Enum": 2 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxAxesForce": { "Vector3": [ 10000.0, @@ -1192,6 +1383,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -1204,12 +1398,23 @@ ], "Superclass": "GenericSettings", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnalyticsService": { "Name": "AnalyticsService", "Tags": [ - "Deprecated", + "NotCreatable", + "NotReplicated", "Service" ], "Superclass": "Instance", @@ -1231,23 +1436,14 @@ } }, "DefaultProperties": { - "ApiKey": { - "String": "" - }, - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false + "Archivable": { + "Bool": true }, - "SourceAssetId": { - "Int64": -1 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "Tags": { - "Tags": [] + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -1317,6 +1513,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1332,6 +1531,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxTorque": { "Float32": 0.0 }, @@ -1347,6 +1549,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -1375,6 +1580,9 @@ "AnimationId": { "Content": "" }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1384,11 +1592,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -1458,7 +1672,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnimationClipProvider": { "Name": "AnimationClipProvider", @@ -1469,7 +1693,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnimationConstraint": { "Name": "AnimationConstraint", @@ -1604,6 +1838,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1619,6 +1856,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsKinematic": { "Bool": false }, @@ -1660,6 +1900,9 @@ ] } }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -1671,6 +1914,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1680,11 +1926,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -1697,6 +1949,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1706,11 +1961,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -1723,7 +1984,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnimationImportData": { "Name": "AnimationImportData", @@ -1733,93 +2004,23 @@ ], "Superclass": "BaseImportData", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnimationRigData": { "Name": "AnimationRigData", "Tags": [], "Superclass": "Instance", "Properties": { - "articulatedJoint": { - "Name": "articulatedJoint", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "endEffectorRotationConstraint": { - "Name": "endEffectorRotationConstraint", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "endEffectorTranslationConstraint": { - "Name": "endEffectorTranslationConstraint", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "endEffectorWeight": { - "Name": "endEffectorWeight", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "facsControl": { - "Name": "facsControl", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "label": { "Name": "label", "Scriptability": "None", @@ -1900,22 +2101,6 @@ } } }, - "rootMotion": { - "Name": "rootMotion", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "transform": { "Name": "transform", "Scriptability": "None", @@ -1931,25 +2116,12 @@ "Serialization": "Serializes" } } - }, - "weight": { - "Name": "weight", - "Scriptability": "None", - "DataType": { - "Value": "BinaryString" - }, - "Tags": [ - "Hidden", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -1959,26 +2131,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, - "articulatedJoint": { - "BinaryString": "" - }, - "endEffectorRotationConstraint": { - "BinaryString": "" - }, - "endEffectorTranslationConstraint": { - "BinaryString": "" - }, - "endEffectorWeight": { - "BinaryString": "" - }, - "facsControl": { - "BinaryString": "" + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" }, "label": { "BinaryString": "AQAAAAEAAAAAAAAA" @@ -1995,14 +2158,8 @@ "preTransform": { "BinaryString": "AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA=" }, - "rootMotion": { - "BinaryString": "" - }, "transform": { "BinaryString": "AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA=" - }, - "weight": { - "BinaryString": "AQAAAAAAAAA=" } } }, @@ -2116,7 +2273,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AnimationTrack": { "Name": "AnimationTrack", @@ -2263,7 +2430,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Animator": { "Name": "Animator", @@ -2336,6 +2513,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -2345,6 +2525,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PreferLodEnabled": { "Bool": true }, @@ -2353,6 +2536,206 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "Annotation": { + "Name": "Annotation", + "Tags": [], + "Superclass": "Instance", + "Properties": { + "AuthorColor3": { + "Name": "AuthorColor3", + "Scriptability": "None", + "DataType": { + "Value": "Color3" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "AuthorId": { + "Name": "AuthorId", + "Scriptability": "None", + "DataType": { + "Value": "Int64" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "Contents": { + "Name": "Contents", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "CreationTimeUnix": { + "Name": "CreationTimeUnix", + "Scriptability": "None", + "DataType": { + "Value": "Int64" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "LastModifiedTimeUnix": { + "Name": "LastModifiedTimeUnix", + "Scriptability": "None", + "DataType": { + "Value": "Int64" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "Resolved": { + "Name": "Resolved", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "TaggedUsers": { + "Name": "TaggedUsers", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AnnotationsService": { + "Name": "AnnotationsService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": { + "Hovered": { + "Name": "Hovered", + "Scriptability": "None", + "DataType": { + "Value": "Ref" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "Selected": { + "Name": "Selected", + "Scriptability": "None", + "DataType": { + "Value": "Ref" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AppLifecycleObserverService": { + "Name": "AppLifecycleObserverService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -2365,7 +2748,17 @@ ], "Superclass": "LocalStorageService", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AppUpdateService": { "Name": "AppUpdateService", @@ -2376,7 +2769,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ArcHandles": { "Name": "ArcHandles", @@ -2478,6 +2881,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -2493,14 +2899,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -2510,6 +2919,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -2524,7 +2936,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetDeliveryProxy": { "Name": "AssetDeliveryProxy", @@ -2575,7 +2997,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetImportService": { "Name": "AssetImportService", @@ -2586,7 +3018,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetImportSession": { "Name": "AssetImportSession", @@ -2596,7 +3038,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetManagerService": { "Name": "AssetManagerService", @@ -2607,7 +3059,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetPatchSettings": { "Name": "AssetPatchSettings", @@ -2657,7 +3119,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AssetService": { "Name": "AssetService", @@ -2668,6 +3140,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -2677,11 +3152,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -2692,7 +3173,17 @@ ], "Superclass": "CustomSoundEffect", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Atmosphere": { "Name": "Atmosphere", @@ -2779,6 +3270,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -2811,6 +3305,9 @@ "Haze": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Offset": { "Float32": 0.0 }, @@ -2819,6 +3316,77 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AtmosphereSensor": { + "Name": "AtmosphereSensor", + "Tags": [], + "Superclass": "SensorBase", + "Properties": { + "AirDensity": { + "Name": "AirDensity", + "Scriptability": "Read", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "RelativeWindVelocity": { + "Name": "RelativeWindVelocity", + "Scriptability": "Read", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UpdateType": { + "Enum": 0 } } }, @@ -3029,6 +3597,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3064,12 +3635,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -3113,9 +3690,25 @@ "Serialization": "DoesNotSerialize" } } + }, + "SpectrumEnabled": { + "Name": "SpectrumEnabled", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3125,11 +3718,20 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, + "SpectrumEnabled": { + "Bool": true + }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3140,6 +3742,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Depth": { "Name": "Depth", "Scriptability": "ReadWrite", @@ -3181,9 +3796,15 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -3193,6 +3814,9 @@ "Depth": { "Float32": 0.45 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Mix": { "Float32": 0.85 }, @@ -3204,6 +3828,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3227,6 +3854,19 @@ } } }, + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "MakeupGain": { "Name": "MakeupGain", "Scriptability": "ReadWrite", @@ -3281,18 +3921,27 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attack": { "Float32": 0.1 }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MakeupGain": { "Float32": 0.0 }, @@ -3310,6 +3959,9 @@ }, "Threshold": { "Float32": -40.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3403,6 +4055,19 @@ "Serialization": "Serializes" } } + }, + "Volume": { + "Name": "Volume", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { @@ -3412,6 +4077,9 @@ "Active": { "Bool": true }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3421,6 +4089,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Muted": { "Bool": false }, @@ -3429,6 +4100,12 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Volume": { + "Float32": 1.0 } } }, @@ -3454,6 +4131,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3463,11 +4143,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3478,6 +4164,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Level": { "Name": "Level", "Scriptability": "ReadWrite", @@ -3493,15 +4192,24 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Level": { "Float32": 0.5 }, @@ -3510,6 +4218,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3520,6 +4231,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "DelayTime": { "Name": "DelayTime", "Scriptability": "ReadWrite", @@ -3574,9 +4298,15 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -3592,12 +4322,18 @@ "Feedback": { "Float32": 0.5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WetLevel": { "Float32": 0.0 } @@ -3622,9 +4358,25 @@ "Serialization": "Serializes" } } + }, + "DistanceAttenuation": { + "Name": "DistanceAttenuation", + "Scriptability": "None", + "DataType": { + "Value": "BinaryString" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3637,11 +4389,20 @@ "DefinesCapabilities": { "Bool": false }, + "DistanceAttenuation": { + "BinaryString": "AA==" + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3652,6 +4413,34 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Editor": { + "Name": "Editor", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "HighGain": { "Name": "HighGain", "Scriptability": "ReadWrite", @@ -3706,9 +4495,15 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -3718,6 +4513,9 @@ "HighGain": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LowGain": { "Float32": 0.0 }, @@ -3735,6 +4533,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3745,6 +4546,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Volume": { "Name": "Volume", "Scriptability": "ReadWrite", @@ -3760,26 +4574,168 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Volume": { "Float32": 1.0 } } }, + "AudioFilter": { + "Name": "AudioFilter", + "Tags": [ + "NotBrowsable" + ], + "Superclass": "Instance", + "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Editor": { + "Name": "Editor", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "FilterType": { + "Name": "FilterType", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "AudioFilterType" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Frequency": { + "Name": "Frequency", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Gain": { + "Name": "Gain", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Q": { + "Name": "Q", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Bypass": { + "Bool": false + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "FilterType": { + "Enum": 0 + }, + "Frequency": { + "Float32": 2000.0 + }, + "Gain": { + "Float32": 0.0 + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Q": { + "Float32": 0.707 + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, "AudioFlanger": { "Name": "AudioFlanger", "Tags": [ @@ -3787,6 +4743,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Depth": { "Name": "Depth", "Scriptability": "ReadWrite", @@ -3828,9 +4797,15 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -3840,6 +4815,9 @@ "Depth": { "Float32": 0.45 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Mix": { "Float32": 0.85 }, @@ -3851,6 +4829,30 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AudioFocusService": { + "Name": "AudioFocusService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3876,6 +4878,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -3888,11 +4893,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3904,7 +4915,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AudioPitchShifter": { "Name": "AudioPitchShifter", @@ -3913,6 +4934,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Pitch": { "Name": "Pitch", "Scriptability": "ReadWrite", @@ -3928,15 +4962,24 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Pitch": { "Float32": 1.25 }, @@ -3945,6 +4988,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -3955,6 +5001,22 @@ ], "Superclass": "Instance", "Properties": { + "Asset": { + "Name": "Asset", + "Scriptability": "None", + "DataType": { + "Value": "Content" + }, + "Tags": [ + "Hidden", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "AssetId": { "Name": "AssetId", "Scriptability": "ReadWrite", @@ -4090,9 +5152,25 @@ "Serialization": "Serializes" } } + }, + "Volume": { + "Name": "Volume", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AssetId": { "String": "" }, @@ -4108,6 +5186,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LoopRegion": { "NumberRange": [ 0.0, @@ -4134,6 +5215,12 @@ }, "TimePosition": { "Float64": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Volume": { + "Float32": 1.0 } } }, @@ -4144,6 +5231,19 @@ ], "Superclass": "Instance", "Properties": { + "Bypass": { + "Name": "Bypass", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "DecayRatio": { "Name": "DecayRatio", "Scriptability": "ReadWrite", @@ -4302,9 +5402,15 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "Bypass": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -4332,6 +5438,9 @@ "HighCutFrequency": { "Float32": 20000.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LateDelayTime": { "Float32": 0.04 }, @@ -4350,6 +5459,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WetLevel": { "Float32": -6.0 } @@ -4483,7 +5595,83 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "Avatar2DGenerationJob": { + "Name": "Avatar2DGenerationJob", + "Tags": [ + "NotCreatable" + ], + "Superclass": "AvatarGenerationJob", + "Properties": { + "Result": { + "Name": "Result", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "Avatar3DGenerationJob": { + "Name": "Avatar3DGenerationJob", + "Tags": [ + "NotCreatable" + ], + "Superclass": "AvatarGenerationJob", + "Properties": { + "Result": { + "Name": "Result", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AvatarChatService": { "Name": "AvatarChatService", @@ -4543,7 +5731,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AvatarCreationService": { "Name": "AvatarCreationService", @@ -4553,7 +5751,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AvatarEditorService": { "Name": "AvatarEditorService", @@ -4564,7 +5772,108 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AvatarGenerationJob": { + "Name": "AvatarGenerationJob", + "Tags": [ + "NotCreatable" + ], + "Superclass": "Instance", + "Properties": { + "Error": { + "Name": "Error", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "AvatarGenerationError" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ErrorMessage": { + "Name": "ErrorMessage", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Progress": { + "Name": "Progress", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Status": { + "Name": "Status", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "AvatarGenerationJobStatus" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "AvatarGenerationSession": { + "Name": "AvatarGenerationSession", + "Tags": [ + "NotCreatable" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "AvatarImportService": { "Name": "AvatarImportService", @@ -4575,7 +5884,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Backpack": { "Name": "Backpack", @@ -4583,6 +5902,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -4592,11 +5914,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -4621,7 +5949,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BadgeService": { "Name": "BadgeService", @@ -4631,7 +5969,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BallSocketConstraint": { "Name": "BallSocketConstraint", @@ -4761,6 +6109,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -4776,6 +6127,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitsEnabled": { "Bool": false }, @@ -4803,6 +6157,9 @@ "TwistUpperAngle": { "Float32": 45.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpperAngle": { "Float32": 45.0 }, @@ -4811,6 +6168,26 @@ } } }, + "BanHistoryPages": { + "Name": "BanHistoryPages", + "Tags": [ + "NotCreatable", + "NotReplicated" + ], + "Superclass": "Pages", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, "BaseImportData": { "Name": "BaseImportData", "Tags": [ @@ -4862,7 +6239,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BasePart": { "Name": "BasePart", @@ -5678,6 +7065,22 @@ } } }, + "PhysicsRepRootPart": { + "Name": "PhysicsRepRootPart", + "Scriptability": "None", + "DataType": { + "Value": "Ref" + }, + "Tags": [ + "Hidden", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "PivotOffset": { "Name": "PivotOffset", "Scriptability": "ReadWrite", @@ -6054,7 +7457,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BasePlayerGui": { "Name": "BasePlayerGui", @@ -6063,7 +7476,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BaseRemoteEvent": { "Name": "BaseRemoteEvent", @@ -6072,7 +7495,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BaseScript": { "Name": "BaseScript", @@ -6115,7 +7548,9 @@ "DataType": { "Value": "Content" }, - "Tags": [], + "Tags": [ + "Deprecated" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -6136,7 +7571,20 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "ScriptGuid": { + "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BaseWrap": { "Name": "BaseWrap", @@ -6296,7 +7744,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Beam": { "Name": "Beam", @@ -6433,6 +7891,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "Segments": { "Name": "Segments", "Scriptability": "ReadWrite", @@ -6552,6 +8026,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -6598,6 +8075,9 @@ "FaceCamera": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LightEmission": { "Float32": 0.0 }, @@ -6641,6 +8121,9 @@ ] } }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Width0": { "Float32": 1.0 }, @@ -6710,7 +8193,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BillboardGui": { "Name": "BillboardGui", @@ -6962,6 +8455,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7006,6 +8502,9 @@ 0.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LightInfluence": { "Float32": 0.0 }, @@ -7068,6 +8567,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndexBehavior": { "Enum": 0 } @@ -7096,6 +8598,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7105,12 +8610,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "BinaryString": "" } @@ -7122,6 +8633,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7131,11 +8645,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7145,6 +8665,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7154,11 +8677,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7168,6 +8697,9 @@ "Superclass": "BevelMesh", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7186,6 +8718,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Offset": { "Vector3": [ 0.0, @@ -7206,6 +8741,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VertexColor": { "Vector3": [ 1.0, @@ -7261,6 +8799,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7273,6 +8814,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Intensity": { "Float32": 0.4 }, @@ -7287,6 +8831,9 @@ }, "Threshold": { "Float32": 0.95 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7310,6 +8857,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7322,6 +8872,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Size": { "Float32": 24.0 }, @@ -7330,6 +8883,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7420,6 +8976,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7429,6 +8988,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxTorque": { "Vector3": [ 4000.0, @@ -7444,6 +9006,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7610,6 +9175,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7626,6 +9194,9 @@ 0.5529412 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftArmColor3": { "Color3": [ 0.9921569, @@ -7666,6 +9237,9 @@ 0.49803925, 0.2784314 ] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7707,6 +9281,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7723,11 +9300,17 @@ 0.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7824,6 +9407,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -7862,6 +9448,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxTorque": { "Vector3": [ 400000.0, @@ -7877,6 +9466,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -7888,7 +9480,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BodyPartDescription": { "Name": "BodyPartDescription", @@ -7951,6 +9553,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AssetId": { "Int64": 0 }, @@ -7973,11 +9578,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -8074,6 +9685,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8086,6 +9700,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxForce": { "Vector3": [ 4000.0, @@ -8108,6 +9725,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -8178,6 +9798,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8194,6 +9817,9 @@ 0.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Location": { "Vector3": [ 0.0, @@ -8206,6 +9832,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -8289,6 +9918,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8298,6 +9930,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxForce": { "Vector3": [ 4000.0, @@ -8314,6 +9949,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -8378,6 +10016,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8413,12 +10054,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -8444,6 +10091,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8453,12 +10103,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Bool": false } @@ -8490,6 +10146,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8524,14 +10183,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Size": { "Vector3": [ 1.0, @@ -8555,6 +10217,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -8753,7 +10418,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BrickColorValue": { "Name": "BrickColorValue", @@ -8775,6 +10450,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -8784,12 +10462,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "BrickColor": 194 } @@ -8804,7 +10488,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BubbleChatConfiguration": { "Name": "BubbleChatConfiguration", @@ -9028,6 +10722,9 @@ "AdorneeName": { "String": "HumanoidRootPart" }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9064,9 +10761,12 @@ "family": "rbxasset://fonts/families/GothamSSm.json", "weight": "Medium", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/GothamSSm-Medium.otf" + "cachedFaceId": "rbxasset://fonts/Montserrat-Medium.ttf" } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LocalPlayerStudsOffset": { "Vector3": [ 0.0, @@ -9102,6 +10802,9 @@ "TextSize": { "Int64": 16 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalStudsOffset": { "Float32": 0.0 } @@ -9192,6 +10895,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9201,11 +10907,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -9218,7 +10930,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "BuoyancySensor": { "Name": "BuoyancySensor", @@ -9253,6 +10975,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9265,6 +10990,9 @@ "FullySubmerged": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -9274,6 +11002,9 @@ "TouchingSurface": { "Bool": false }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpdateType": { "Enum": 0 } @@ -9299,6 +11030,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9308,12 +11042,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "CFrame": { "position": [ @@ -9350,6 +11090,9 @@ "Superclass": "FlyweightService", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9359,11 +11102,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -9376,7 +11125,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CalloutService": { "Name": "CalloutService", @@ -9387,7 +11146,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Camera": { "Name": "Camera", @@ -9610,6 +11379,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9686,12 +11458,18 @@ "HeadScale": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VRTiltAndRollEnabled": { "Bool": false } @@ -9727,6 +11505,19 @@ "Serialization": "Serializes" } } + }, + "ResolutionScale": { + "Name": "ResolutionScale", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { @@ -9739,6 +11530,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9760,9 +11554,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -9793,6 +11587,9 @@ "GroupTransparency": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -9811,6 +11608,9 @@ ] ] }, + "ResolutionScale": { + "Float32": 1.0 + }, "Rotation": { "Float32": 0.0 }, @@ -9856,6 +11656,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -9868,12 +11671,21 @@ "Name": "CaptureService", "Tags": [ "NotCreatable", - "NotReplicated", "Service" ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CatalogPages": { "Name": "CatalogPages", @@ -9883,7 +11695,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ChangeHistoryService": { "Name": "ChangeHistoryService", @@ -9893,7 +11715,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ChannelSelectorSoundEffect": { "Name": "ChannelSelectorSoundEffect", @@ -9918,6 +11750,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -9933,6 +11768,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Priority": { "Int32": 0 }, @@ -9941,6 +11779,261 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "ChannelTabsConfiguration": { + "Name": "ChannelTabsConfiguration", + "Tags": [ + "NotCreatable" + ], + "Superclass": "TextChatConfigurations", + "Properties": { + "AbsolutePosition": { + "Name": "AbsolutePosition", + "Scriptability": "Read", + "DataType": { + "Value": "Vector2" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "AbsoluteSize": { + "Name": "AbsoluteSize", + "Scriptability": "Read", + "DataType": { + "Value": "Vector2" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "BackgroundColor3": { + "Name": "BackgroundColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "BackgroundTransparency": { + "Name": "BackgroundTransparency", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float64" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Enabled": { + "Name": "Enabled", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "FontFace": { + "Name": "FontFace", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Font" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "HoverBackgroundColor3": { + "Name": "HoverBackgroundColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "SelectedTabTextColor3": { + "Name": "SelectedTabTextColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "TextColor3": { + "Name": "TextColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "TextSize": { + "Name": "TextSize", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Int64" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "TextStrokeColor3": { + "Name": "TextStrokeColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "TextStrokeTransparency": { + "Name": "TextStrokeTransparency", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float64" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "BackgroundColor3": { + "Color3": [ + 0.09803922, + 0.105882354, + 0.11372549 + ] + }, + "BackgroundTransparency": { + "Float64": 0.0 + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "Enabled": { + "Bool": false + }, + "FontFace": { + "Font": { + "family": "rbxasset://fonts/families/GothamSSm.json", + "weight": "Bold", + "style": "Normal", + "cachedFaceId": "rbxasset://fonts/Montserrat-Bold.ttf" + } + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "HoverBackgroundColor3": { + "Color3": [ + 0.49019608, + 0.49019608, + 0.49019608 + ] + }, + "SelectedTabTextColor3": { + "Color3": [ + 1.0, + 1.0, + 1.0 + ] + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "TextColor3": { + "Color3": [ + 0.6862745, + 0.6862745, + 0.6862745 + ] + }, + "TextSize": { + "Int64": 14 + }, + "TextStrokeColor3": { + "Color3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "TextStrokeTransparency": { + "Float64": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -9951,7 +12044,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CharacterMesh": { "Name": "CharacterMesh", @@ -10012,6 +12115,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10027,6 +12133,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MeshId": { "Int64": 0 }, @@ -10038,6 +12147,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -10078,6 +12190,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10090,6 +12205,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LoadDefaultChat": { "Bool": true }, @@ -10098,6 +12216,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -10372,6 +12493,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10402,9 +12526,12 @@ "family": "rbxasset://fonts/families/GothamSSm.json", "weight": "Medium", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/GothamSSm-Medium.otf" + "cachedFaceId": "rbxasset://fonts/Montserrat-Medium.ttf" } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "KeyboardKeyCode": { "Enum": 47 }, @@ -10440,6 +12567,9 @@ }, "TextStrokeTransparency": { "Float64": 0.5 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -10670,6 +12800,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10697,12 +12830,15 @@ "family": "rbxasset://fonts/families/GothamSSm.json", "weight": "Medium", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/GothamSSm-Medium.otf" + "cachedFaceId": "rbxasset://fonts/Montserrat-Medium.ttf" } }, "HeightScale": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalAlignment": { "Enum": 1 }, @@ -10732,6 +12868,9 @@ "TextStrokeTransparency": { "Float64": 0.5 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalAlignment": { "Enum": 1 }, @@ -10749,7 +12888,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ChorusSoundEffect": { "Name": "ChorusSoundEffect", @@ -10797,6 +12946,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10812,6 +12964,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Mix": { "Float32": 0.5 }, @@ -10826,6 +12981,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -10862,6 +13020,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10874,6 +13035,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxActivationDistance": { "Float32": 32.0 }, @@ -10882,6 +13046,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -10893,7 +13060,17 @@ ], "Superclass": "NetworkReplicator", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ClimbController": { "Name": "ClimbController", @@ -10957,6 +13134,9 @@ "AccelerationTime": { "Float32": 0.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -10975,6 +13155,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MoveMaxForce": { "Float32": 10000.0 }, @@ -10986,6 +13169,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11044,7 +13230,38 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "CloudCRUDService": { + "Name": "CloudCRUDService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CloudLocalizationTable": { "Name": "CloudLocalizationTable", @@ -11054,7 +13271,17 @@ ], "Superclass": "LocalizationTable", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Clouds": { "Name": "Clouds", @@ -11115,6 +13342,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11140,11 +13370,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11157,7 +13393,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Collaborator": { "Name": "Collaborator", @@ -11172,10 +13418,12 @@ "DataType": { "Value": "CFrame" }, - "Tags": [], + "Tags": [ + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" } } }, @@ -11185,10 +13433,28 @@ "DataType": { "Value": "Int32" }, - "Tags": [], + "Tags": [ + "Deprecated", + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" + } + } + }, + "CollaboratorColor3": { + "Name": "CollaboratorColor3", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" } } }, @@ -11198,10 +13464,12 @@ "DataType": { "Value": "String" }, - "Tags": [], + "Tags": [ + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" } } }, @@ -11211,22 +13479,38 @@ "DataType": { "Value": "Int32" }, - "Tags": [], + "Tags": [ + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" + } + } + }, + "IsIdle": { + "Name": "IsIdle", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" } } }, "Status": { "Name": "Status", - "Scriptability": "None", + "Scriptability": "ReadWrite", "DataType": { "Enum": "CollaboratorStatus" }, "Tags": [ - "Hidden", - "NotScriptable" + "Hidden" ], "Kind": { "Canonical": { @@ -11240,10 +13524,12 @@ "DataType": { "Value": "Int64" }, - "Tags": [], + "Tags": [ + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" } } }, @@ -11253,15 +13539,27 @@ "DataType": { "Value": "String" }, - "Tags": [], + "Tags": [ + "Hidden" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" } } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CollaboratorsService": { "Name": "CollaboratorsService", @@ -11271,7 +13569,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CollectionService": { "Name": "CollectionService", @@ -11282,6 +13590,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11291,11 +13602,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11319,6 +13636,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11328,12 +13648,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Color3": [ 0.0, @@ -11402,6 +13728,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11420,6 +13749,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Saturation": { "Float32": 0.0 }, @@ -11435,6 +13767,63 @@ 1.0, 1.0 ] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "ColorGradingEffect": { + "Name": "ColorGradingEffect", + "Tags": [ + "NotBrowsable" + ], + "Superclass": "PostEffect", + "Properties": { + "TonemapperPreset": { + "Name": "TonemapperPreset", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "TonemapperPreset" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "Enabled": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "TonemapperPreset": { + "Enum": 0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11586,7 +13975,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CommandService": { "Name": "CommandService", @@ -11597,7 +13996,37 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "CommerceService": { + "Name": "CommerceService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CompressorSoundEffect": { "Name": "CompressorSoundEffect", @@ -11684,6 +14113,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attack": { "Float32": 0.1 }, @@ -11702,6 +14134,9 @@ "GainMakeup": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Priority": { "Int32": 0 }, @@ -11719,6 +14154,9 @@ }, "Threshold": { "Float32": -40.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11761,6 +14199,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11795,8 +14236,8 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, @@ -11806,6 +14247,9 @@ "Height": { "Float32": 2.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Radius": { "Float32": 0.5 }, @@ -11825,6 +14269,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -11839,6 +14286,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -11848,11 +14298,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -11864,7 +14320,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ConnectivityService": { "Name": "ConnectivityService", @@ -11892,7 +14358,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Constraint": { "Name": "Constraint", @@ -11983,7 +14459,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ContentProvider": { "Name": "ContentProvider", @@ -12027,7 +14513,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ContextActionService": { "Name": "ContextActionService", @@ -12038,6 +14534,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12047,11 +14546,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -12062,7 +14567,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ControllerBase": { "Name": "ControllerBase", @@ -12114,7 +14629,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ControllerManager": { "Name": "ControllerManager", @@ -12224,9 +14749,25 @@ "Serialization": "Serializes" } } + }, + "UpDirection": { + "Name": "UpDirection", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12249,6 +14790,9 @@ 1.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MovingDirection": { "Vector3": [ 0.0, @@ -12261,6 +14805,16 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UpDirection": { + "Vector3": [ + 0.0, + 1.0, + 0.0 + ] } } }, @@ -12336,6 +14890,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12345,6 +14902,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HitFrame": { "CFrame": { "position": [ @@ -12390,6 +14950,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpdateType": { "Enum": 0 } @@ -12402,7 +14965,17 @@ ], "Superclass": "SensorBase", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ControllerService": { "Name": "ControllerService", @@ -12413,7 +14986,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ConversationalAIAcceptanceService": { "Name": "ConversationalAIAcceptanceService", @@ -12424,7 +15007,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CookiesService": { "Name": "CookiesService", @@ -12435,6 +15028,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12444,11 +15040,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -12491,7 +15093,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CorePackages": { "Name": "CorePackages", @@ -12502,7 +15114,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CoreScript": { "Name": "CoreScript", @@ -12512,7 +15134,20 @@ ], "Superclass": "BaseScript", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "ScriptGuid": { + "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CoreScriptDebuggingManagerHelper": { "Name": "CoreScriptDebuggingManagerHelper", @@ -12522,7 +15157,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CoreScriptSyncService": { "Name": "CoreScriptSyncService", @@ -12533,7 +15178,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CornerWedgePart": { "Name": "CornerWedgePart", @@ -12544,6 +15199,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12646,6 +15304,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -12749,6 +15410,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -12767,7 +15431,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CrossDMScriptChangeListener": { "Name": "CrossDMScriptChangeListener", @@ -12778,7 +15452,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CurveAnimation": { "Name": "CurveAnimation", @@ -12786,6 +15470,9 @@ "Superclass": "AnimationClip", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12798,6 +15485,9 @@ "GuidBinaryString": { "BinaryString": "AAAAAAAAAAAAAAAAAAAAAA==" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Loop": { "Bool": true }, @@ -12809,6 +15499,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -12837,6 +15530,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12846,6 +15542,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PersistedCurrentValue": { "Float32": 0.0 }, @@ -12854,6 +15553,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -12879,6 +15581,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -12888,11 +15593,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -12903,7 +15614,17 @@ ], "Superclass": "SoundEffect", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "CylinderHandleAdornment": { "Name": "CylinderHandleAdornment", @@ -12973,6 +15694,9 @@ "Angle": { "Float32": 360.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -13007,8 +15731,8 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, @@ -13018,6 +15742,9 @@ "Height": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InnerRadius": { "Float32": 0.0 }, @@ -13040,6 +15767,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -13056,6 +15786,9 @@ "Superclass": "BevelMesh", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -13074,6 +15807,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Offset": { "Vector3": [ 0.0, @@ -13094,6 +15830,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VertexColor": { "Vector3": [ 1.0, @@ -13286,7 +16025,9 @@ "DataType": { "Value": "Bool" }, - "Tags": [], + "Tags": [ + "Deprecated" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -13358,6 +16099,9 @@ "AngularVelocity": { "Float32": 0.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -13373,6 +16117,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InclinationAngle": { "Float32": 0.0 }, @@ -13436,6 +16183,9 @@ "TargetPosition": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpperAngle": { "Float32": 45.0 }, @@ -13772,7 +16522,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataModelMesh": { "Name": "DataModelMesh", @@ -13822,7 +16582,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataModelPatchService": { "Name": "DataModelPatchService", @@ -13833,7 +16603,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataModelSession": { "Name": "DataModelSession", @@ -13877,7 +16657,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStore": { "Name": "DataStore", @@ -13887,7 +16677,17 @@ ], "Superclass": "GlobalDataStore", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreGetOptions": { "Name": "DataStoreGetOptions", @@ -13910,7 +16710,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreIncrementOptions": { "Name": "DataStoreIncrementOptions", @@ -13919,7 +16729,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreInfo": { "Name": "DataStoreInfo", @@ -13978,7 +16798,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreKey": { "Name": "DataStoreKey", @@ -14005,7 +16835,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreKeyInfo": { "Name": "DataStoreKeyInfo", @@ -14064,7 +16904,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreKeyPages": { "Name": "DataStoreKeyPages", @@ -14091,7 +16941,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreListingPages": { "Name": "DataStoreListingPages", @@ -14118,7 +16978,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreObjectVersionInfo": { "Name": "DataStoreObjectVersionInfo", @@ -14177,7 +17047,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreOptions": { "Name": "DataStoreOptions", @@ -14200,7 +17080,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStorePages": { "Name": "DataStorePages", @@ -14210,7 +17100,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreService": { "Name": "DataStoreService", @@ -14254,6 +17154,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -14266,6 +17169,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LegacyNamingScheme": { "Bool": false }, @@ -14274,6 +17180,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -14284,7 +17193,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DataStoreVersionPages": { "Name": "DataStoreVersionPages", @@ -14294,7 +17213,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Debris": { "Name": "Debris", @@ -14321,6 +17250,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -14330,6 +17262,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxItems": { "Int32": 1000 }, @@ -14338,6 +17273,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -14470,7 +17408,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggablePluginWatcher": { "Name": "DebuggablePluginWatcher", @@ -14481,7 +17429,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerBreakpoint": { "Name": "DebuggerBreakpoint", @@ -14588,7 +17546,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerConnection": { "Name": "DebuggerConnection", @@ -14667,7 +17635,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerConnectionManager": { "Name": "DebuggerConnectionManager", @@ -14695,7 +17673,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerLuaResponse": { "Name": "DebuggerLuaResponse", @@ -14791,7 +17779,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerManager": { "Name": "DebuggerManager", @@ -14819,7 +17817,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerUIService": { "Name": "DebuggerUIService", @@ -14830,7 +17838,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerVariable": { "Name": "DebuggerVariable", @@ -14943,7 +17961,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DebuggerWatch": { "Name": "DebuggerWatch", @@ -14964,7 +17992,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Decal": { "Name": "Decal", @@ -15073,6 +18111,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15092,6 +18133,9 @@ "Face": { "Enum": 5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -15104,6 +18148,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndex": { "Int32": 1 } @@ -15168,6 +18215,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15186,6 +18236,9 @@ "FocusDistance": { "Float32": 0.05 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InFocusRadius": { "Float32": 10.0 }, @@ -15197,6 +18250,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -15209,7 +18265,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Dialog": { "Name": "Dialog", @@ -15348,6 +18414,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15369,6 +18438,9 @@ "GoodbyeDialog": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialPrompt": { "String": "" }, @@ -15393,6 +18465,9 @@ 0.0, 0.0 ] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -15455,6 +18530,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15470,6 +18548,9 @@ "GoodbyeDialog": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ResponseDialog": { "String": "" }, @@ -15479,6 +18560,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UserDialog": { "String": "" } @@ -15504,6 +18588,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15516,6 +18603,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Level": { "Float32": 0.75 }, @@ -15527,6 +18617,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -15555,7 +18648,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DoubleConstrainedValue": { "Name": "DoubleConstrainedValue", @@ -15639,6 +18742,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -15648,6 +18754,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxValue": { "Float64": 1.0 }, @@ -15660,6 +18769,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "value": { "Float64": 0.0 } @@ -15674,7 +18786,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DragDetector": { "Name": "DragDetector", @@ -15878,6 +19000,19 @@ } } }, + "PermissionPolicy": { + "Name": "PermissionPolicy", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "DragDetectorPermissionPolicy" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "PhysicalDragClickedPart": { "Name": "PhysicalDragClickedPart", "Scriptability": "None", @@ -16086,6 +19221,9 @@ "ApplyAtCenterOfMass": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -16133,6 +19271,9 @@ "GamepadModeSwitchKeyCode": { "Enum": 1004 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "KeyboardModeSwitchKeyCode": { "Enum": 306 }, @@ -16172,6 +19313,9 @@ 90.0 ] }, + "PermissionPolicy": { + "Enum": 1 + }, "ResponseStyle": { "Enum": 1 }, @@ -16193,6 +19337,9 @@ "TrackballRollFactor": { "Float32": 1.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VRSwitchKeyCode": { "Enum": 1007 } @@ -16203,7 +19350,17 @@ "Tags": [], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DraggerService": { "Name": "DraggerService", @@ -16439,6 +19596,22 @@ } } }, + "PartSnapEnabled": { + "Name": "PartSnapEnabled", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "PivotSnapToGeometry": { "Name": "PivotSnapToGeometry", "Scriptability": "None", @@ -16487,7 +19660,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "DynamicRotate": { "Name": "DynamicRotate", @@ -16510,7 +19693,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "EchoSoundEffect": { "Name": "EchoSoundEffect", @@ -16571,6 +19764,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -16592,6 +19788,9 @@ "Feedback": { "Float32": 0.5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Priority": { "Int32": 0 }, @@ -16601,6 +19800,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WetLevel": { "Float32": 0.0 } @@ -16608,9 +19810,7 @@ }, "EditableImage": { "Name": "EditableImage", - "Tags": [ - "NotReplicated" - ], + "Tags": [], "Superclass": "Instance", "Properties": { "ImageData": { @@ -16629,6 +19829,23 @@ } } }, + "IsReplicatedCopy": { + "Name": "IsReplicatedCopy", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "Size": { "Name": "Size", "Scriptability": "ReadWrite", @@ -16643,15 +19860,40 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "EditableMesh": { "Name": "EditableMesh", - "Tags": [ - "NotReplicated" - ], + "Tags": [], "Superclass": "DataModelMesh", "Properties": { + "IsReplicatedCopy": { + "Name": "IsReplicatedCopy", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "MeshData": { "Name": "MeshData", "Scriptability": "None", @@ -16660,7 +19902,6 @@ }, "Tags": [ "Hidden", - "NotReplicated", "NotScriptable" ], "Kind": { @@ -16668,9 +19909,32 @@ "Serialization": "DoesNotSerialize" } } + }, + "SkinningEnabled": { + "Name": "SkinningEnabled", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "EmotesPages": { "Name": "EmotesPages", @@ -16680,18 +19944,17 @@ ], "Superclass": "InventoryPages", "Properties": {}, - "DefaultProperties": {} - }, - "EngineAPICloudProcessingService": { - "Name": "EngineAPICloudProcessingService", - "Tags": [ - "NotCreatable", - "NotReplicated", - "Service" - ], - "Superclass": "Instance", - "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "EqualizerSoundEffect": { "Name": "EqualizerSoundEffect", @@ -16739,6 +20002,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -16754,6 +20020,9 @@ "HighGain": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LowGain": { "Float32": -20.0 }, @@ -16768,6 +20037,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -16791,6 +20063,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -16800,6 +20075,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "RotationOrder": { "Enum": 0 }, @@ -16808,6 +20086,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -16819,7 +20100,38 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "ExampleService": { + "Name": "ExampleService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ExperienceAuthService": { "Name": "ExperienceAuthService", @@ -16829,7 +20141,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ExperienceInviteOptions": { "Name": "ExperienceInviteOptions", @@ -16891,7 +20213,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ExperienceNotificationService": { "Name": "ExperienceNotificationService", @@ -16903,6 +20235,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -16912,11 +20247,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -16929,7 +20270,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ExperienceStateCaptureService": { "Name": "ExperienceStateCaptureService", @@ -16940,6 +20291,39 @@ ], "Superclass": "Instance", "Properties": { + "HiddenSelectionEnabled": { + "Name": "HiddenSelectionEnabled", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "IsInBackground": { + "Name": "IsInBackground", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "IsInCaptureMode": { "Name": "IsInCaptureMode", "Scriptability": "None", @@ -16958,7 +20342,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Explosion": { "Name": "Explosion", @@ -17017,6 +20411,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "Position": { "Name": "Position", "Scriptability": "ReadWrite", @@ -17058,6 +20468,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -17079,6 +20492,9 @@ "ExplosionType": { "Enum": 1 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Position": { "Vector3": [ 0.0, @@ -17095,6 +20511,9 @@ "TimeScale": { "Float32": 1.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -17174,7 +20593,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FaceControls": { "Name": "FaceControls", @@ -17933,6 +21362,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -17942,11 +21374,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -17972,7 +21410,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FacialAnimationRecordingService": { "Name": "FacialAnimationRecordingService", @@ -18000,7 +21448,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FacialAnimationStreamingServiceStats": { "Name": "FacialAnimationStreamingServiceStats", @@ -18010,7 +21468,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FacialAnimationStreamingServiceV2": { "Name": "FacialAnimationStreamingServiceV2", @@ -18036,7 +21504,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FacialAnimationStreamingSubsessionStats": { "Name": "FacialAnimationStreamingSubsessionStats", @@ -18046,7 +21524,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FacsImportData": { "Name": "FacsImportData", @@ -18056,7 +21544,17 @@ ], "Superclass": "BaseImportData", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Feature": { "Name": "Feature", @@ -18118,7 +21616,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "File": { "Name": "File", @@ -18146,7 +21654,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FileMesh": { "Name": "FileMesh", @@ -18181,6 +21699,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18190,6 +21711,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MeshId": { "Content": "" }, @@ -18216,6 +21740,9 @@ "TextureId": { "Content": "" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VertexColor": { "Vector3": [ 1.0, @@ -18273,6 +21800,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "SecondaryColor": { "Name": "SecondaryColor", "Scriptability": "ReadWrite", @@ -18366,6 +21909,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18388,6 +21934,9 @@ "Heat": { "Float32": 9.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SecondaryColor": { "Color3": [ 0.54509807, @@ -18406,6 +21955,9 @@ }, "TimeScale": { "Float32": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -18431,6 +21983,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18472,6 +22027,9 @@ ] } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -18538,6 +22096,9 @@ "ToolTip": { "String": "" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -18591,6 +22152,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18696,6 +22260,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -18805,6 +22372,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -18822,7 +22392,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FlangeSoundEffect": { "Name": "FlangeSoundEffect", @@ -18870,6 +22450,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18885,6 +22468,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Mix": { "Float32": 0.85 }, @@ -18899,6 +22485,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -18941,6 +22530,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -18950,12 +22542,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ValuesAndTimes": { "BinaryString": "AQAAAAAAAAABAAAAAAAAAA==" } @@ -19074,6 +22672,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19082,8 +22683,8 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, @@ -19093,6 +22694,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -19114,6 +22718,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Float32": 2.0 }, @@ -19133,6 +22740,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19142,11 +22752,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -19173,6 +22789,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19182,11 +22801,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -19210,6 +22835,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19219,12 +22847,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -19289,7 +22923,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Frame": { "Name": "Frame", @@ -19320,6 +22964,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19341,9 +22988,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -19364,6 +23011,9 @@ "Draggable": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -19430,6 +23080,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -19446,7 +23099,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FriendService": { "Name": "FriendService", @@ -19456,7 +23119,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "FunctionalTest": { "Name": "FunctionalTest", @@ -19564,6 +23237,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19579,11 +23255,17 @@ "HasMigratedSettingsToTestService": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -19596,6 +23278,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19605,11 +23290,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -19651,7 +23342,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GamepadService": { "Name": "GamepadService", @@ -19676,7 +23377,37 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "GenericChallengeService": { + "Name": "GenericChallengeService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GenericSettings": { "Name": "GenericSettings", @@ -19685,7 +23416,17 @@ ], "Superclass": "ServiceProvider", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Geometry": { "Name": "Geometry", @@ -19695,7 +23436,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GeometryService": { "Name": "GeometryService", @@ -19705,7 +23456,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GetTextBoundsParams": { "Name": "GetTextBoundsParams", @@ -19727,6 +23488,19 @@ } } }, + "RichText": { + "Name": "RichText", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Size": { "Name": "Size", "Scriptability": "ReadWrite", @@ -19767,7 +23541,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GlobalDataStore": { "Name": "GlobalDataStore", @@ -19777,7 +23561,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GlobalSettings": { "Name": "GlobalSettings", @@ -19787,7 +23581,17 @@ ], "Superclass": "GenericSettings", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Glue": { "Name": "Glue", @@ -19850,6 +23654,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -19942,11 +23749,17 @@ 0.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -19976,7 +23789,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GroundController": { "Name": "GroundController", @@ -20134,6 +23957,9 @@ "AccelerationTime": { "Float32": 0.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -20164,6 +23990,9 @@ "GroundOffset": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MoveSpeedFactor": { "Float32": 1.0 }, @@ -20181,6 +24010,9 @@ }, "TurnSpeedFactor": { "Float32": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -20232,7 +24064,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GroupService": { "Name": "GroupService", @@ -20243,7 +24085,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiBase": { "Name": "GuiBase", @@ -20252,7 +24104,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiBase2d": { "Name": "GuiBase2d", @@ -20503,7 +24365,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiBase3d": { "Name": "GuiBase3d", @@ -20569,7 +24441,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiButton": { "Name": "GuiButton", @@ -20728,7 +24610,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiLabel": { "Name": "GuiLabel", @@ -20737,7 +24629,17 @@ ], "Superclass": "GuiObject", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiMain": { "Name": "GuiMain", @@ -20747,6 +24649,9 @@ "Superclass": "ScreenGui", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -20768,6 +24673,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ResetOnSpawn": { "Bool": true }, @@ -20798,6 +24706,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndexBehavior": { "Enum": 0 } @@ -21317,7 +25228,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuiService": { "Name": "GuiService", @@ -21452,6 +25373,22 @@ } } }, + "PreferredTextSize": { + "Name": "PreferredTextSize", + "Scriptability": "Read", + "DataType": { + "Enum": "PreferredTextSize" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "PreferredTransparency": { "Name": "PreferredTransparency", "Scriptability": "Read", @@ -21545,7 +25482,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "GuidRegistryService": { "Name": "GuidRegistryService", @@ -21555,7 +25502,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HSRDataContentProvider": { "Name": "HSRDataContentProvider", @@ -21566,7 +25523,17 @@ ], "Superclass": "CacheableContentProvider", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HandleAdornment": { "Name": "HandleAdornment", @@ -21641,7 +25608,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Handles": { "Name": "Handles", @@ -21756,6 +25733,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -21764,8 +25744,8 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, @@ -21782,6 +25762,9 @@ "Front" ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -21794,6 +25777,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -21806,7 +25792,131 @@ ], "Superclass": "PartAdornment", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "HapticEffect": { + "Name": "HapticEffect", + "Tags": [], + "Superclass": "Instance", + "Properties": { + "Looped": { + "Name": "Looped", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Position": { + "Name": "Position", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Radius": { + "Name": "Radius", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Type": { + "Name": "Type", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "HapticEffectType" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Waveform": { + "Name": "Waveform", + "Scriptability": "None", + "DataType": { + "Value": "Ref" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Looped": { + "Bool": false + }, + "Position": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "Radius": { + "Float32": 3.0 + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "Type": { + "Enum": 1 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HapticService": { "Name": "HapticService", @@ -21817,7 +25927,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Hat": { "Name": "Hat", @@ -21827,6 +25947,9 @@ "Superclass": "Accoutrement", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AttachmentPoint": { "CFrame": { "position": [ @@ -21862,11 +25985,37 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "HeatmapService": { + "Name": "HeatmapService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -21878,7 +26027,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HiddenSurfaceRemovalAsset": { "Name": "HiddenSurfaceRemovalAsset", @@ -21921,6 +26080,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -21936,11 +26098,17 @@ "HSRMeshIdData": { "BinaryString": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -22072,6 +26240,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22097,6 +26268,9 @@ "FillTransparency": { "Float32": 0.5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "OutlineColor": { "Color3": [ 1.0, @@ -22112,6 +26286,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -22285,7 +26462,9 @@ "DataType": { "Value": "Bool" }, - "Tags": [], + "Tags": [ + "Deprecated" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -22332,6 +26511,9 @@ "AngularVelocity": { "Float32": 0.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22347,6 +26529,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitsEnabled": { "Bool": false }, @@ -22380,6 +26565,9 @@ "TargetAngle": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpperAngle": { "Float32": 45.0 }, @@ -22396,6 +26584,9 @@ "Superclass": "Message", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22405,6 +26596,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -22413,6 +26607,9 @@ }, "Text": { "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -22424,6 +26621,9 @@ "Superclass": "Feature", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22436,6 +26636,9 @@ "FaceId": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InOut": { "Enum": 2 }, @@ -22450,6 +26653,9 @@ }, "TopBottom": { "Enum": 1 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -22462,7 +26668,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HopperBin": { "Name": "HopperBin", @@ -22538,6 +26754,9 @@ "Active": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22550,6 +26769,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -22604,6 +26826,9 @@ "TextureId": { "Content": "" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -22640,7 +26865,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HttpRequest": { "Name": "HttpRequest", @@ -22649,7 +26884,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "HttpService": { "Name": "HttpService", @@ -22661,7 +26906,7 @@ "Properties": { "HttpEnabled": { "Name": "HttpEnabled", - "Scriptability": "None", + "Scriptability": "Read", "DataType": { "Value": "Bool" }, @@ -22674,6 +26919,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -22683,6 +26931,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HttpEnabled": { "Bool": false }, @@ -22691,6 +26942,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -23441,6 +27695,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -23486,6 +27743,9 @@ "HipHeight": { "Float32": 0.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InternalBodyScale": { "Vector3": [ 1.0, @@ -23526,6 +27786,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UseJumpPower": { "Bool": true }, @@ -23540,6 +27803,9 @@ "Superclass": "Controller", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -23549,11 +27815,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -23965,6 +28237,21 @@ } } }, + "ResetIncludesBodyParts": { + "Name": "ResetIncludesBodyParts", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "RightArm": { "Name": "RightArm", "Scriptability": "ReadWrite", @@ -24136,18 +28423,15 @@ } }, "DefaultProperties": { - "AccessoryBlob": { - "String": "[]" - }, "AccessoryRigidAndLayeredBlob": { "String": "[]" }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, - "BackAccessory": { - "String": "" - }, "BodyTypeScale": { "Float32": 0.3 }, @@ -24172,107 +28456,42 @@ "Face": { "Int64": 0 }, - "FaceAccessory": { - "String": "" - }, "FallAnimation": { "Int64": 0 }, - "FrontAccessory": { - "String": "" - }, "GraphicTShirt": { "Int64": 0 }, - "HairAccessory": { - "String": "" - }, - "HatAccessory": { - "String": "" - }, - "Head": { - "Int64": 0 - }, - "HeadColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, "HeadScale": { "Float32": 1.0 }, "HeightScale": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IdleAnimation": { "Int64": 0 }, "JumpAnimation": { "Int64": 0 }, - "LeftArm": { - "Int64": 0 - }, - "LeftArmColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, - "LeftLeg": { - "Int64": 0 - }, - "LeftLegColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, "MoodAnimation": { "Int64": 0 }, - "NeckAccessory": { - "String": "" - }, "Pants": { "Int64": 0 }, "ProportionScale": { "Float32": 1.0 }, - "RightArm": { - "Int64": 0 - }, - "RightArmColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, - "RightLeg": { - "Int64": 0 - }, - "RightLegColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, "RunAnimation": { "Int64": 0 }, "Shirt": { "Int64": 0 }, - "ShouldersAccessory": { - "String": "" - }, "SourceAssetId": { "Int64": -1 }, @@ -24282,18 +28501,8 @@ "Tags": { "Tags": [] }, - "Torso": { - "Int64": 0 - }, - "TorsoColor": { - "Color3": [ - 0.0, - 0.0, - 0.0 - ] - }, - "WaistAccessory": { - "String": "" + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" }, "WalkAnimation": { "Int64": 0 @@ -24453,6 +28662,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -24491,6 +28703,9 @@ ] } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Offset": { "CFrame": { "position": [ @@ -24532,6 +28747,9 @@ "Type": { "Enum": 0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Weight": { "Float32": 1.0 } @@ -24545,7 +28763,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "IXPService": { "Name": "IXPService", @@ -24556,7 +28784,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ImageButton": { "Name": "ImageButton", @@ -24763,6 +29001,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -24787,9 +29028,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -24810,6 +29051,9 @@ "Draggable": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HoverImage": { "Content": "" }, @@ -24946,6 +29190,9 @@ ] ] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -24993,6 +29240,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -25035,6 +29285,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Image": { "Content": "rbxasset://textures/SurfacesDefault.png" }, @@ -25060,6 +29313,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -25247,6 +29503,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -25268,9 +29527,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -25291,6 +29550,9 @@ "Draggable": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Image": { "Content": "" }, @@ -25412,6 +29674,9 @@ ] ] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -25495,7 +29760,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "InputObject": { "Name": "InputObject", @@ -25570,7 +29845,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "InsertService": { "Name": "InsertService", @@ -25620,6 +29905,9 @@ "AllowInsertFreeModels": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -25629,11 +29917,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -25719,10 +30013,7 @@ "DataType": { "Value": "SecurityCapabilities" }, - "Tags": [ - "Hidden", - "NotScriptable" - ], + "Tags": [], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -25792,7 +30083,7 @@ ], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } }, @@ -25857,6 +30148,21 @@ } } }, + "Sandboxed": { + "Name": "Sandboxed", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "SourceAssetId": { "Name": "SourceAssetId", "Scriptability": "None", @@ -25864,8 +30170,7 @@ "Value": "Int64" }, "Tags": [ - "Hidden", - "NotReplicated" + "Hidden" ], "Kind": { "Canonical": { @@ -25896,13 +30201,12 @@ "Value": "UniqueId" }, "Tags": [ - "Hidden", "NotReplicated", "NotScriptable" ], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } }, @@ -25957,7 +30261,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "InstanceAdornment": { "Name": "InstanceAdornment", @@ -25980,7 +30294,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "IntConstrainedValue": { "Name": "IntConstrainedValue", @@ -26064,6 +30388,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -26073,6 +30400,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxValue": { "Int64": 10 }, @@ -26085,6 +30415,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "value": { "Int64": 0 } @@ -26110,6 +30443,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -26119,12 +30455,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Int64": 0 } @@ -26198,7 +30540,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "InternalSyncService": { "Name": "InternalSyncService", @@ -26209,7 +30561,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "IntersectOperation": { "Name": "IntersectOperation", @@ -26220,6 +30582,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "AssetId": { "Content": "" }, @@ -26334,6 +30699,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialSize": { "Vector3": [ 1.0, @@ -26401,7 +30769,7 @@ "Float32": 0.0 }, "RenderFidelity": { - "Enum": 1 + "Enum": 0 }, "RightParamA": { "Float32": -0.5 @@ -26456,6 +30824,33 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UnscaledCofm": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaOffDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolume": { + "Float32": null + }, "UsePartColor": { "Bool": false }, @@ -26476,7 +30871,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "JointImportData": { "Name": "JointImportData", @@ -26486,7 +30891,17 @@ ], "Superclass": "BaseImportData", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "JointInstance": { "Name": "JointInstance", @@ -26594,7 +31009,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "JointsService": { "Name": "JointsService", @@ -26605,7 +31030,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "KeyboardService": { "Name": "KeyboardService", @@ -26615,7 +31050,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Keyframe": { "Name": "Keyframe", @@ -26637,6 +31082,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -26646,6 +31094,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -26654,6 +31105,9 @@ }, "Time": { "Float32": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -26677,6 +31131,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -26686,12 +31143,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "String": "" } @@ -26719,6 +31182,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -26734,6 +31200,9 @@ "GuidBinaryString": { "BinaryString": "AAAAAAAAAAAAAAAAAAAAAA==" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Loop": { "Bool": true }, @@ -26745,6 +31214,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -26757,7 +31229,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LSPFileSyncService": { "Name": "LSPFileSyncService", @@ -26768,7 +31250,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LanguageService": { "Name": "LanguageService", @@ -26779,7 +31271,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LayerCollector": { "Name": "LayerCollector", @@ -26829,7 +31331,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LegacyStudioBridge": { "Name": "LegacyStudioBridge", @@ -26840,7 +31352,17 @@ ], "Superclass": "ILegacyStudioBridge", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Light": { "Name": "Light", @@ -26902,7 +31424,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Lighting": { "Name": "Lighting", @@ -27146,9 +31678,7 @@ "DataType": { "Enum": "Technology" }, - "Tags": [ - "NotScriptable" - ], + "Tags": [], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -27193,6 +31723,9 @@ 0.5 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -27247,6 +31780,9 @@ "GlobalShadows": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "OutdoorAmbient": { "Color3": [ 0.5, @@ -27271,6 +31807,9 @@ }, "TimeOfDay": { "String": "14:00:00" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -27349,6 +31888,9 @@ "ApplyAtCenterOfMass": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -27364,6 +31906,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InverseSquareLaw": { "Bool": false }, @@ -27382,6 +31927,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -27426,6 +31974,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -27460,14 +32011,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Length": { "Float32": 5.0 }, @@ -27490,6 +32044,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -27674,6 +32231,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -27695,6 +32255,9 @@ "ForceLimitsEnabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LineDirection": { "Vector3": [ 1.0, @@ -27750,6 +32313,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VectorVelocity": { "Vector3": [ 0.0, @@ -27765,6 +32331,27 @@ } } }, + "LinkingService": { + "Name": "LinkingService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, "LiveScriptingService": { "Name": "LiveScriptingService", "Tags": [ @@ -27790,7 +32377,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LocalDebuggerConnection": { "Name": "LocalDebuggerConnection", @@ -27800,7 +32397,17 @@ ], "Superclass": "DebuggerConnection", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LocalScript": { "Name": "LocalScript", @@ -27808,6 +32415,9 @@ "Superclass": "Script", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -27820,12 +32430,18 @@ "Disabled": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LinkedSource": { "Content": "" }, "RunContext": { "Enum": 0 }, + "ScriptGuid": { + "String": "" + }, "Source": { "String": "" }, @@ -27834,6 +32450,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -27846,7 +32465,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LocalizationService": { "Name": "LocalizationService", @@ -28018,6 +32647,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28027,11 +32659,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28121,6 +32759,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28133,6 +32774,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -28141,6 +32785,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28232,7 +32879,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LodDataService": { "Name": "LodDataService", @@ -28244,6 +32901,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28253,11 +32913,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28270,7 +32936,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LogService": { "Name": "LogService", @@ -28280,7 +32956,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LoginService": { "Name": "LoginService", @@ -28290,7 +32976,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LuaSettings": { "Name": "LuaSettings", @@ -28300,7 +32996,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LuaSourceContainer": { "Name": "LuaSourceContainer", @@ -28342,21 +33048,6 @@ } } }, - "CurrentEditor": { - "Name": "CurrentEditor", - "Scriptability": "None", - "DataType": { - "Value": "Ref" - }, - "Tags": [ - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "DoesNotSerialize" - } - } - }, "HasAssociatedDrafts": { "Name": "HasAssociatedDrafts", "Scriptability": "None", @@ -28406,21 +33097,6 @@ } } }, - "RuntimeSource": { - "Name": "RuntimeSource", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "String" - }, - "Tags": [ - "NotReplicated" - ], - "Kind": { - "Canonical": { - "Serialization": "DoesNotSerialize" - } - } - }, "SandboxedSource": { "Name": "SandboxedSource", "Scriptability": "None", @@ -28450,29 +33126,25 @@ ], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" - } - } - }, - "SyncingEditorText": { - "Name": "SyncingEditorText", - "Scriptability": "None", - "DataType": { - "Value": "Bool" - }, - "Tags": [ - "Hidden", - "NotReplicated", - "NotScriptable" - ], - "Kind": { - "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "ScriptGuid": { + "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "LuaWebService": { "Name": "LuaWebService", @@ -28483,6 +33155,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28492,11 +33167,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28509,7 +33190,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ManualGlue": { "Name": "ManualGlue", @@ -28519,6 +33210,9 @@ "Superclass": "ManualSurfaceJointInstance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28583,11 +33277,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28599,7 +33299,17 @@ ], "Superclass": "JointInstance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ManualWeld": { "Name": "ManualWeld", @@ -28609,6 +33319,9 @@ "Superclass": "ManualSurfaceJointInstance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28673,11 +33386,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -28720,6 +33439,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -28729,12 +33451,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ValuesAndTimes": { "BinaryString": "AQAAAAAAAAABAAAAAAAAAA==" } @@ -28748,7 +33476,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MaterialGenerationService": { "Name": "MaterialGenerationService", @@ -28759,7 +33497,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MaterialGenerationSession": { "Name": "MaterialGenerationSession", @@ -28769,7 +33517,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MaterialImportData": { "Name": "MaterialImportData", @@ -28848,7 +33606,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MaterialService": { "Name": "MaterialService", @@ -29493,6 +34261,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AsphaltName": { "String": "Asphalt" }, @@ -29556,6 +34327,9 @@ "GroundName": { "String": "Ground" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IceName": { "String": "Ice" }, @@ -29622,6 +34396,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Use2022MaterialsXml": { "Bool": false }, @@ -29794,6 +34571,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -29812,6 +34592,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaterialPattern": { "Enum": 0 }, @@ -29835,6 +34618,9 @@ }, "TexturePack": { "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -29846,7 +34632,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MemStorageService": { "Name": "MemStorageService", @@ -29857,7 +34653,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MemoryStoreHashMap": { "Name": "MemoryStoreHashMap", @@ -29867,7 +34673,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MemoryStoreHashMapPages": { "Name": "MemoryStoreHashMapPages", @@ -29877,7 +34693,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MemoryStoreQueue": { "Name": "MemoryStoreQueue", @@ -29887,7 +34713,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MemoryStoreService": { "Name": "MemoryStoreService", @@ -29897,6 +34733,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -29906,11 +34745,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -29922,7 +34767,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MeshContentProvider": { "Name": "MeshContentProvider", @@ -29933,7 +34788,17 @@ ], "Superclass": "CacheableContentProvider", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MeshImportData": { "Name": "MeshImportData", @@ -30231,7 +35096,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MeshPart": { "Name": "MeshPart", @@ -30459,6 +35334,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -30573,6 +35451,9 @@ "HasSkinnedMesh": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialSize": { "Vector3": [ 0.0, @@ -30647,7 +35528,7 @@ "Float32": 0.0 }, "RenderFidelity": { - "Enum": 1 + "Enum": 0 }, "RightParamA": { "Float32": -0.5 @@ -30702,6 +35583,33 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UnscaledCofm": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaOffDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolume": { + "Float32": null + }, "Velocity": { "Vector3": [ 0.0, @@ -30736,6 +35644,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -30745,6 +35656,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -30753,6 +35667,9 @@ }, "Text": { "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -30764,7 +35681,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MessageBusService": { "Name": "MessageBusService", @@ -30775,7 +35702,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MessagingService": { "Name": "MessagingService", @@ -30786,7 +35723,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MetaBreakpoint": { "Name": "MetaBreakpoint", @@ -30961,6 +35908,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -30979,6 +35929,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Line": { "Int32": 0 }, @@ -30996,6 +35949,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31025,6 +35981,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31037,11 +35996,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31054,7 +36019,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Model": { "Name": "Model", @@ -31232,7 +36207,7 @@ }, "WorldPivotData": { "Name": "WorldPivotData", - "Scriptability": "None", + "Scriptability": "Custom", "DataType": { "Value": "OptionalCFrame" }, @@ -31248,6 +36223,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31257,6 +36235,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -31308,6 +36289,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -31364,7 +36348,9 @@ "DataType": { "Value": "Content" }, - "Tags": [], + "Tags": [ + "Deprecated" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -31386,6 +36372,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31395,9 +36384,15 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LinkedSource": { "Content": "" }, + "ScriptGuid": { + "String": "" + }, "Source": { "String": "" }, @@ -31406,6 +36401,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31454,9 +36452,28 @@ "Serialization": "Serializes" } } + }, + "ReplicateCurrentAngle": { + "Name": "ReplicateCurrentAngle", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31524,6 +36541,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxVelocity": { "Float32": 0.0 }, @@ -31532,6 +36552,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31574,6 +36597,38 @@ } } }, + "ReplicateCurrentAngle6D": { + "Name": "ReplicateCurrentAngle6D", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "Hidden", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "ReplicateCurrentOffset6D": { + "Name": "ReplicateCurrentOffset6D", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "Hidden", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "Transform": { "Name": "Transform", "Scriptability": "ReadWrite", @@ -31592,6 +36647,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31659,6 +36717,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxVelocity": { "Float32": 0.0 }, @@ -31667,6 +36728,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31678,6 +36742,9 @@ "Superclass": "Feature", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -31690,6 +36757,9 @@ "FaceId": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InOut": { "Enum": 2 }, @@ -31704,6 +36774,9 @@ }, "TopBottom": { "Enum": 1 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -31920,7 +36993,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MouseService": { "Name": "MouseService", @@ -31931,7 +37014,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "MultipleDocumentInterfaceInstance": { "Name": "MultipleDocumentInterfaceInstance", @@ -31959,7 +37052,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NegateOperation": { "Name": "NegateOperation", @@ -31970,6 +37073,9 @@ "Anchored": { "Bool": true }, + "Archivable": { + "Bool": true + }, "AssetId": { "Content": "" }, @@ -32084,6 +37190,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialSize": { "Vector3": [ 1.0, @@ -32151,7 +37260,7 @@ "Float32": 0.0 }, "RenderFidelity": { - "Enum": 1 + "Enum": 0 }, "RightParamA": { "Float32": -0.5 @@ -32206,6 +37315,33 @@ "Transparency": { "Float32": 0.1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UnscaledCofm": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaOffDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolume": { + "Float32": null + }, "UsePartColor": { "Bool": false }, @@ -32227,7 +37363,17 @@ ], "Superclass": "NetworkPeer", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NetworkMarker": { "Name": "NetworkMarker", @@ -32237,7 +37383,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NetworkPeer": { "Name": "NetworkPeer", @@ -32247,7 +37403,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NetworkReplicator": { "Name": "NetworkReplicator", @@ -32257,7 +37423,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NetworkServer": { "Name": "NetworkServer", @@ -32268,7 +37444,17 @@ ], "Superclass": "NetworkPeer", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NetworkSettings": { "Name": "NetworkSettings", @@ -32447,7 +37633,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NoCollisionConstraint": { "Name": "NoCollisionConstraint", @@ -32495,6 +37691,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32507,11 +37706,63 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "Noise": { + "Name": "Noise", + "Tags": [ + "NotReplicated" + ], + "Superclass": "Instance", + "Properties": { + "NoiseType": { + "Name": "NoiseType", + "Scriptability": "None", + "DataType": { + "Enum": "NoiseType" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Seed": { + "Name": "Seed", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -32523,6 +37774,9 @@ "Superclass": "FlyweightService", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32532,11 +37786,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -32614,7 +37874,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "NumberPose": { "Name": "NumberPose", @@ -32636,6 +37906,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32651,12 +37924,18 @@ "EasingStyle": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Float64": 0.0 }, @@ -32685,6 +37964,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32694,12 +37976,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Float64": 0.0 } @@ -32725,6 +38013,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32734,11 +38025,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -32751,7 +38048,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "OpenCloudApiV1": { "Name": "OpenCloudApiV1", @@ -32761,7 +38068,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "OpenCloudService": { "Name": "OpenCloudService", @@ -32773,6 +38090,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32782,11 +38102,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -32796,6 +38122,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -32805,11 +38134,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -32821,7 +38156,17 @@ ], "Superclass": "GlobalDataStore", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "OutfitPages": { "Name": "OutfitPages", @@ -32831,7 +38176,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PVAdornment": { "Name": "PVAdornment", @@ -32854,7 +38209,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PVInstance": { "Name": "PVInstance", @@ -32897,7 +38262,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PackageLink": { "Name": "PackageLink", @@ -33071,7 +38446,7 @@ }, "SerializedDefaultAttributes": { "Name": "SerializedDefaultAttributes", - "Scriptability": "Read", + "Scriptability": "None", "DataType": { "Value": "BinaryString" }, @@ -33130,7 +38505,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PackageService": { "Name": "PackageService", @@ -33141,7 +38526,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PackageUIService": { "Name": "PackageUIService", @@ -33152,7 +38547,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Pages": { "Name": "Pages", @@ -33179,7 +38584,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Pants": { "Name": "Pants", @@ -33201,6 +38616,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -33217,6 +38635,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PantsTemplate": { "Content": "" }, @@ -33225,6 +38646,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -33310,6 +38734,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -33326,6 +38753,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -33335,6 +38765,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -33401,6 +38834,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -33506,6 +38942,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -33612,6 +39051,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -33642,7 +39084,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PartOperation": { "Name": "PartOperation", @@ -33748,6 +39200,23 @@ } } }, + "ManifoldMesh": { + "Name": "ManifoldMesh", + "Scriptability": "None", + "DataType": { + "Value": "SharedString" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "MeshData": { "Name": "MeshData", "Scriptability": "None", @@ -33826,6 +39295,23 @@ } } }, + "SerializedOperationGraph": { + "Name": "SerializedOperationGraph", + "Scriptability": "None", + "DataType": { + "Value": "SharedString" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "SmoothingAngle": { "Name": "SmoothingAngle", "Scriptability": "ReadWrite", @@ -33873,6 +39359,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "AssetId": { "Content": "" }, @@ -33987,6 +39476,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialSize": { "Vector3": [ 1.0, @@ -34054,7 +39546,7 @@ "Float32": 0.0 }, "RenderFidelity": { - "Enum": 1 + "Enum": 0 }, "RightParamA": { "Float32": -0.5 @@ -34109,6 +39601,33 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UnscaledCofm": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaOffDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolume": { + "Float32": null + }, "UsePartColor": { "Bool": false }, @@ -34161,6 +39680,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -34173,6 +39695,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MeshData": { "BinaryString": "" }, @@ -34181,6 +39706,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -34371,6 +39899,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "LockedToPart": { "Name": "LockedToPart", "Scriptability": "ReadWrite", @@ -34643,6 +40187,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -34704,6 +40251,9 @@ "FlipbookStartRandom": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Lifetime": { "NumberRange": [ 5.0, @@ -34821,6 +40371,9 @@ ] } }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VelocityInheritance": { "Float32": 0.0 }, @@ -34841,7 +40394,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PatchMapping": { "Name": "PatchMapping", @@ -34891,7 +40454,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Path": { "Name": "Path", @@ -34918,34 +40491,39 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Path2D": { "Name": "Path2D", - "Tags": [ - "NotReplicated" - ], + "Tags": [], "Superclass": "GuiBase", "Properties": { - "AbsoluteSize": { - "Name": "AbsoluteSize", - "Scriptability": "None", + "Closed": { + "Name": "Closed", + "Scriptability": "ReadWrite", "DataType": { - "Value": "Vector2" + "Value": "Bool" }, - "Tags": [ - "NotReplicated", - "ReadOnly" - ], + "Tags": [], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } }, - "Color": { - "Name": "Color", - "Scriptability": "None", + "Color3": { + "Name": "Color3", + "Scriptability": "ReadWrite", "DataType": { "Value": "Color3" }, @@ -34956,13 +40534,16 @@ } } }, - "Position": { - "Name": "Position", + "PropertiesSerialize": { + "Name": "PropertiesSerialize", "Scriptability": "None", "DataType": { - "Value": "UDim2" + "Value": "BinaryString" }, - "Tags": [], + "Tags": [ + "Hidden", + "NotScriptable" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -34986,7 +40567,7 @@ }, "Thickness": { "Name": "Thickness", - "Scriptability": "None", + "Scriptability": "ReadWrite", "DataType": { "Value": "Float32" }, @@ -35012,7 +40593,7 @@ }, "Visible": { "Name": "Visible", - "Scriptability": "None", + "Scriptability": "ReadWrite", "DataType": { "Value": "Bool" }, @@ -35022,9 +40603,72 @@ "Serialization": "Serializes" } } + }, + "ZIndex": { + "Name": "ZIndex", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "Closed": { + "Bool": false + }, + "Color3": { + "Color3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "DefinesCapabilities": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "PropertiesSerialize": { + "BinaryString": "AAAAAA==" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "Thickness": { + "Float32": 1.0 + }, + "Transparency": { + "Float32": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Visible": { + "Bool": true + }, + "ZIndex": { + "Int32": 1 + } + } }, "PathfindingLink": { "Name": "PathfindingLink", @@ -35085,6 +40729,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -35094,6 +40741,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsBidirectional": { "Bool": true }, @@ -35105,6 +40755,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -35141,6 +40794,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -35150,6 +40806,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Label": { "String": "" }, @@ -35161,6 +40820,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -35190,7 +40852,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PausedState": { "Name": "PausedState", @@ -35252,7 +40924,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PausedStateBreakpoint": { "Name": "PausedStateBreakpoint", @@ -35280,7 +40962,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PausedStateException": { "Name": "PausedStateException", @@ -35308,7 +41000,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PermissionsService": { "Name": "PermissionsService", @@ -35319,6 +41021,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -35328,11 +41033,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -35345,6 +41056,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -35354,11 +41068,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -35734,6 +41454,58 @@ } } }, + "DrawConstraintsNetForce": { + "Name": "DrawConstraintsNetForce", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DrawContactsNetForce": { + "Name": "DrawContactsNetForce", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DrawTotalNetForce": { + "Name": "DrawTotalNetForce", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "EnableForceVisualizationSmoothing": { + "Name": "EnableForceVisualizationSmoothing", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "FluidForceDrawScale": { "Name": "FluidForceDrawScale", "Scriptability": "None", @@ -35776,6 +41548,19 @@ } } }, + "ForceVisualizationSmoothingSteps": { + "Name": "ForceVisualizationSmoothingSteps", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "IsInterpolationThrottleShown": { "Name": "IsInterpolationThrottleShown", "Scriptability": "ReadWrite", @@ -35854,6 +41639,19 @@ } } }, + "ShowInstanceNamesForDrawnForcesAndTorques": { + "Name": "ShowInstanceNamesForDrawnForcesAndTorques", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "SolverConvergenceMetricType": { "Name": "SolverConvergenceMetricType", "Scriptability": "None", @@ -35893,6 +41691,19 @@ } } }, + "TorqueDrawScale": { + "Name": "TorqueDrawScale", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "UseCSGv2": { "Name": "UseCSGv2", "Scriptability": "ReadWrite", @@ -35907,7 +41718,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PitchShiftSoundEffect": { "Name": "PitchShiftSoundEffect", @@ -35929,6 +41750,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -35941,6 +41765,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Octave": { "Float32": 1.25 }, @@ -35952,6 +41779,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -35964,7 +41794,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlacesService": { "Name": "PlacesService", @@ -35975,7 +41815,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Plane": { "Name": "Plane", @@ -35985,6 +41835,9 @@ "Superclass": "PlaneConstraint", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -36000,12 +41853,18 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -36017,6 +41876,9 @@ "Superclass": "Constraint", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -36032,12 +41894,18 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -36050,7 +41918,17 @@ ], "Superclass": "Part", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlatformCloudStorageService": { "Name": "PlatformCloudStorageService", @@ -36061,7 +41939,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlatformFriendsService": { "Name": "PlatformFriendsService", @@ -36072,7 +41960,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Player": { "Name": "Player", @@ -36929,7 +42827,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlayerEmulatorService": { "Name": "PlayerEmulatorService", @@ -37004,6 +42912,22 @@ } } }, + "PseudolocalizationEnabled": { + "Name": "PseudolocalizationEnabled", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "SerializedEmulatedPolicyInfo": { "Name": "SerializedEmulatedPolicyInfo", "Scriptability": "None", @@ -37022,6 +42946,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -37040,9 +42967,15 @@ "EmulatedGameLocale": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PlayerEmulationEnabled": { "Bool": false }, + "PseudolocalizationEnabled": { + "Bool": false + }, "SerializedEmulatedPolicyInfo": { "BinaryString": "" }, @@ -37051,6 +42984,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -37105,7 +43041,37 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "PlayerHydrationService": { + "Name": "PlayerHydrationService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlayerMouse": { "Name": "PlayerMouse", @@ -37114,7 +43080,17 @@ ], "Superclass": "Mouse", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlayerScripts": { "Name": "PlayerScripts", @@ -37124,7 +43100,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PlayerViewService": { "Name": "PlayerViewService", @@ -37135,7 +43121,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Players": { "Name": "Players", @@ -37389,6 +43385,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -37401,6 +43400,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxPlayers": { "Int32": 12 }, @@ -37416,6 +43418,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UseStrafingAnimations": { "Bool": false } @@ -37528,7 +43533,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginAction": { "Name": "PluginAction", @@ -37650,7 +43665,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginCapabilities": { "Name": "PluginCapabilities", @@ -37672,6 +43697,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -37681,6 +43709,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Manifest": { "String": "{\"Metadata\":{\"TargetDataModels\": [\"Edit\", \"Server\", \"Client\"]},\"Permissions\":{}}" }, @@ -37689,6 +43720,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -37701,7 +43735,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginDragEvent": { "Name": "PluginDragEvent", @@ -37776,7 +43820,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginGui": { "Name": "PluginGui", @@ -37800,7 +43854,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginGuiService": { "Name": "PluginGuiService", @@ -37811,7 +43875,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginManagementService": { "Name": "PluginManagementService", @@ -37822,7 +43896,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginManager": { "Name": "PluginManager", @@ -37831,7 +43915,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginManagerInterface": { "Name": "PluginManagerInterface", @@ -37841,7 +43935,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginMenu": { "Name": "PluginMenu", @@ -37882,7 +43986,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginMouse": { "Name": "PluginMouse", @@ -37891,7 +44005,17 @@ ], "Superclass": "Mouse", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginPolicyService": { "Name": "PluginPolicyService", @@ -37902,7 +44026,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginToolbar": { "Name": "PluginToolbar", @@ -37911,7 +44045,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PluginToolbarButton": { "Name": "PluginToolbarButton", @@ -37966,7 +44110,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PointLight": { "Name": "PointLight", @@ -37988,6 +44142,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38010,6 +44167,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Range": { "Float32": 8.0 }, @@ -38021,6 +44181,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38033,7 +44196,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PolicyService": { "Name": "PolicyService", @@ -38075,7 +44248,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Pose": { "Name": "Pose", @@ -38113,6 +44296,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38154,12 +44340,18 @@ "EasingStyle": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Weight": { "Float32": 1.0 } @@ -38212,7 +44404,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PostEffect": { "Name": "PostEffect", @@ -38235,7 +44437,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "PrismaticConstraint": { "Name": "PrismaticConstraint", @@ -38246,6 +44458,9 @@ "ActuatorType": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38261,6 +44476,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitsEnabled": { "Bool": false }, @@ -38300,6 +44518,9 @@ "TargetPosition": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UpperLimit": { "Float32": 5.0 }, @@ -38320,6 +44541,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38329,11 +44553,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38529,6 +44759,9 @@ "ActionText": { "String": "Interact" }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38553,6 +44786,9 @@ "GamepadKeyCode": { "Enum": 1000 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HoldDuration": { "Float32": 0.0 }, @@ -38582,6 +44818,9 @@ 0.0, 0.0 ] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38621,6 +44860,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38633,6 +44875,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxPromptsVisible": { "Int32": 16 }, @@ -38641,6 +44886,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38653,7 +44901,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "QWidgetPluginGui": { "Name": "QWidgetPluginGui", @@ -38663,7 +44921,118 @@ ], "Superclass": "PluginGui", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "RTAnimationTracker": { + "Name": "RTAnimationTracker", + "Tags": [ + "NotReplicated" + ], + "Superclass": "Instance", + "Properties": { + "Active": { + "Name": "Active", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "EnableFallbackAudioInput": { + "Name": "EnableFallbackAudioInput", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "SessionName": { + "Name": "SessionName", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "TrackerMode": { + "Name": "TrackerMode", + "Scriptability": "Read", + "DataType": { + "Enum": "TrackerMode" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "TrackerType": { + "Name": "TrackerType", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "TrackerType" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RayValue": { "Name": "RayValue", @@ -38685,6 +45054,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38694,12 +45066,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Ray": { "origin": [ @@ -38724,7 +45102,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ReflectionMetadata": { "Name": "ReflectionMetadata", @@ -38732,6 +45120,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38741,11 +45132,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38755,6 +45152,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38764,11 +45164,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38847,6 +45253,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38886,6 +45295,9 @@ "FFlag": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Insertable": { "Bool": true }, @@ -38924,6 +45336,9 @@ }, "UINumTicks": { "Float64": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38933,6 +45348,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38942,11 +45360,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -38956,6 +45380,9 @@ "Superclass": "ReflectionMetadataItem", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -38989,6 +45416,9 @@ "FFlag": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsBackend": { "Bool": false }, @@ -39018,6 +45448,9 @@ }, "UINumTicks": { "Float64": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39027,6 +45460,9 @@ "Superclass": "ReflectionMetadataItem", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39060,6 +45496,9 @@ "FFlag": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsBackend": { "Bool": false }, @@ -39089,6 +45528,9 @@ }, "UINumTicks": { "Float64": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39098,6 +45540,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39107,11 +45552,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39121,6 +45572,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39130,11 +45584,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39144,6 +45604,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39153,11 +45616,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39377,7 +45846,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ReflectionMetadataMember": { "Name": "ReflectionMetadataMember", @@ -39385,6 +45864,9 @@ "Superclass": "ReflectionMetadataItem", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39418,6 +45900,9 @@ "FFlag": { "String": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsBackend": { "Bool": false }, @@ -39447,6 +45932,9 @@ }, "UINumTicks": { "Float64": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39456,6 +45944,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39465,11 +45956,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39479,6 +45976,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39488,11 +45988,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39505,7 +46011,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RemoteCursorService": { "Name": "RemoteCursorService", @@ -39515,7 +46031,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RemoteDebuggerServer": { "Name": "RemoteDebuggerServer", @@ -39526,7 +46052,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RemoteEvent": { "Name": "RemoteEvent", @@ -39534,6 +46070,9 @@ "Superclass": "BaseRemoteEvent", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39543,11 +46082,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39557,6 +46102,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -39566,11 +46114,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -39782,7 +46336,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RenderingTest": { "Name": "RenderingTest", @@ -39912,6 +46476,19 @@ } } }, + "QualityAuto": { + "Name": "QualityAuto", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "QualityLevel": { "Name": "QualityLevel", "Scriptability": "ReadWrite", @@ -39925,6 +46502,19 @@ } } }, + "RenderingTestFrameCount": { + "Name": "RenderingTestFrameCount", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ShouldSkip": { "Name": "ShouldSkip", "Scriptability": "ReadWrite", @@ -39966,6 +46556,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40016,12 +46609,21 @@ "FieldOfView": { "Float32": 70.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PerfTest": { "Bool": false }, + "QualityAuto": { + "Bool": false + }, "QualityLevel": { "Int32": 21 }, + "RenderingTestFrameCount": { + "Int32": 120 + }, "ShouldSkip": { "Bool": false }, @@ -40036,6 +46638,9 @@ }, "Timeout": { "Int32": 10 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -40048,6 +46653,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40057,11 +46665,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -40074,6 +46688,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40083,11 +46700,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -40163,6 +46786,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40187,6 +46813,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Priority": { "Int32": 0 }, @@ -40196,6 +46825,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WetLevel": { "Float32": 0.0 } @@ -40210,7 +46842,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RigidConstraint": { "Name": "RigidConstraint", @@ -40218,6 +46860,9 @@ "Superclass": "Constraint", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40233,12 +46878,18 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -40268,6 +46919,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40277,6 +46931,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ImageDataSerialize": { "BinaryString": "" }, @@ -40291,6 +46948,86 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "RobloxEditableMesh": { + "Name": "RobloxEditableMesh", + "Tags": [], + "Superclass": "EditableMesh", + "Properties": { + "MeshDataSerialize": { + "Name": "MeshDataSerialize", + "Scriptability": "None", + "DataType": { + "Value": "BinaryString" + }, + "Tags": [ + "Hidden", + "NotReplicated", + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "MeshDataSerialize": { + "BinaryString": "" + }, + "Offset": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "Scale": { + "Vector3": [ + 1.0, + 1.0, + 1.0 + ] + }, + "SkinningEnabled": { + "Bool": false + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "VertexColor": { + "Vector3": [ + 1.0, + 1.0, + 1.0 + ] } } }, @@ -40303,7 +47040,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RobloxReplicatedStorage": { "Name": "RobloxReplicatedStorage", @@ -40314,7 +47061,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RobloxServerStorage": { "Name": "RobloxServerStorage", @@ -40325,7 +47082,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RocketPropulsion": { "Name": "RocketPropulsion", @@ -40495,6 +47262,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40507,6 +47277,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxSpeed": { "Float32": 30.0 }, @@ -40547,6 +47320,9 @@ }, "TurnP": { "Float32": 3000.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -40638,6 +47414,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -40653,6 +47432,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Length": { "Float32": 5.0 }, @@ -40674,6 +47456,9 @@ "Thickness": { "Float32": 0.1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -40687,7 +47472,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RootImportData": { "Name": "RootImportData", @@ -40830,6 +47625,19 @@ } } }, + "KeepZeroInfluenceBones": { + "Name": "KeepZeroInfluenceBones", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "MergeMeshes": { "Name": "MergeMeshes", "Scriptability": "ReadWrite", @@ -40859,6 +47667,19 @@ } } }, + "PreferredUploadId": { + "Name": "PreferredUploadId", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Int64" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "RestPose": { "Name": "RestPose", "Scriptability": "ReadWrite", @@ -41003,7 +47824,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RopeConstraint": { "Name": "RopeConstraint", @@ -41132,6 +47963,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41147,6 +47981,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Length": { "Float32": 5.0 }, @@ -41162,6 +47999,9 @@ "Thickness": { "Float32": 0.1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false }, @@ -41190,6 +48030,9 @@ "Superclass": "JointInstance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41254,11 +48097,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -41270,6 +48119,9 @@ "Superclass": "DynamicRotate", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41337,11 +48189,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -41353,6 +48211,9 @@ "Superclass": "DynamicRotate", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41420,11 +48281,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -41467,6 +48334,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41476,12 +48346,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ValuesAndTimes": { "BinaryString": "AQAAAAAAAAABAAAAAAAAAA==" } @@ -41496,7 +48372,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RunService": { "Name": "RunService", @@ -41522,9 +48408,34 @@ "Serialization": "DoesNotSerialize" } } + }, + "RunState": { + "Name": "RunState", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "RunState" + }, + "Tags": [ + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RunningAverageItemDouble": { "Name": "RunningAverageItemDouble", @@ -41533,7 +48444,17 @@ ], "Superclass": "StatsItem", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RunningAverageItemInt": { "Name": "RunningAverageItemInt", @@ -41542,7 +48463,17 @@ ], "Superclass": "StatsItem", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RunningAverageTimeIntervalItem": { "Name": "RunningAverageTimeIntervalItem", @@ -41551,7 +48482,17 @@ ], "Superclass": "StatsItem", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "RuntimeScriptService": { "Name": "RuntimeScriptService", @@ -41562,7 +48503,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SafetyService": { "Name": "SafetyService", @@ -41571,8 +48522,32 @@ "Service" ], "Superclass": "Instance", - "Properties": {}, - "DefaultProperties": {} + "Properties": { + "IsCaptureModeForReport": { + "Name": "IsCaptureModeForReport", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScreenGui": { "Name": "ScreenGui", @@ -41657,9 +48632,7 @@ "DataType": { "Enum": "ScreenInsets" }, - "Tags": [ - "NotBrowsable" - ], + "Tags": [], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -41668,6 +48641,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41689,6 +48665,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ResetOnSpawn": { "Bool": true }, @@ -41719,6 +48698,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndexBehavior": { "Enum": 0 } @@ -41790,7 +48772,10 @@ "DataType": { "Value": "Bool" }, - "Tags": [], + "Tags": [ + "Deprecated", + "Hidden" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -41829,7 +48814,10 @@ "DataType": { "Enum": "Font" }, - "Tags": [], + "Tags": [ + "Deprecated", + "Hidden" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -41842,7 +48830,10 @@ "DataType": { "Value": "Bool" }, - "Tags": [], + "Tags": [ + "Deprecated", + "Hidden" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -41863,7 +48854,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Script": { "Name": "Script", @@ -41885,6 +48886,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -41897,12 +48901,18 @@ "Disabled": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LinkedSource": { "Content": "" }, "RunContext": { "Enum": 0 }, + "ScriptGuid": { + "String": "" + }, "Source": { "String": "" }, @@ -41911,6 +48921,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -41922,7 +48935,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptChangeService": { "Name": "ScriptChangeService", @@ -41933,7 +48956,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptCloneWatcher": { "Name": "ScriptCloneWatcher", @@ -41944,7 +48977,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptCloneWatcherHelper": { "Name": "ScriptCloneWatcherHelper", @@ -41955,7 +48998,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptCommitService": { "Name": "ScriptCommitService", @@ -41966,7 +49019,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptContext": { "Name": "ScriptContext", @@ -41993,7 +49056,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptDebugger": { "Name": "ScriptDebugger", @@ -42099,7 +49172,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptDocument": { "Name": "ScriptDocument", @@ -42109,7 +49192,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptEditorService": { "Name": "ScriptEditorService", @@ -42120,7 +49213,37 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "ScriptProfilerService": { + "Name": "ScriptProfilerService", + "Tags": [ + "NotCreatable", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptRegistrationService": { "Name": "ScriptRegistrationService", @@ -42131,7 +49254,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptRuntime": { "Name": "ScriptRuntime", @@ -42141,7 +49274,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ScriptService": { "Name": "ScriptService", @@ -42152,6 +49295,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -42161,11 +49307,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -42479,6 +49631,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -42503,9 +49658,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -42550,6 +49705,9 @@ "ElasticBehavior": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalScrollBarInset": { "Enum": 0 }, @@ -42641,6 +49799,9 @@ "TopImage": { "Content": "rbxasset://textures/ui/Scroll/scroll-top.png" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalScrollBarInset": { "Enum": 0 }, @@ -42694,6 +49855,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -42802,6 +49966,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -42908,6 +50075,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -43027,6 +50197,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43036,11 +50209,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43122,6 +50301,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43130,14 +50312,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LineThickness": { "Float32": 0.15 }, @@ -43163,6 +50348,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -43176,7 +50364,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SelectionLasso": { "Name": "SelectionLasso", @@ -43199,7 +50397,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SelectionPartLasso": { "Name": "SelectionPartLasso", @@ -43223,6 +50431,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43231,14 +50442,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -43248,6 +50462,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -43275,6 +50492,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43283,14 +50503,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Point": { "Vector3": [ 0.0, @@ -43307,6 +50530,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -43362,6 +50588,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43370,14 +50599,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -43397,6 +50629,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -43423,7 +50658,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ServerReplicator": { "Name": "ServerReplicator", @@ -43433,7 +50678,17 @@ ], "Superclass": "NetworkReplicator", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ServerScriptService": { "Name": "ServerScriptService", @@ -43462,6 +50717,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43471,6 +50729,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LoadStringEnabled": { "Bool": false }, @@ -43479,6 +50740,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43492,6 +50756,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43501,11 +50768,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43517,7 +50790,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ServiceVisibilityService": { "Name": "ServiceVisibilityService", @@ -43555,6 +50838,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43567,12 +50853,18 @@ "HiddenServices": { "BinaryString": "AAAAAA==" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VisibleServices": { "BinaryString": "AAAAAA==" } @@ -43586,7 +50878,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SharedTableRegistry": { "Name": "SharedTableRegistry", @@ -43597,7 +50899,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Shirt": { "Name": "Shirt", @@ -43619,6 +50931,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43635,6 +50950,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ShirtTemplate": { "Content": "" }, @@ -43643,6 +50961,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43679,6 +51000,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43698,11 +51022,17 @@ "Graphic": { "Content": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43715,7 +51045,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SkateboardController": { "Name": "SkateboardController", @@ -43756,6 +51096,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43765,11 +51108,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -43872,6 +51221,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -43977,6 +51329,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -44092,6 +51447,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -44123,6 +51481,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -44132,6 +51493,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SkinColor": { "BrickColor": 226 }, @@ -44140,6 +51504,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -44306,6 +51673,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -44318,6 +51688,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MoonAngularSize": { "Float32": 11.0 }, @@ -44356,6 +51729,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -44505,7 +51881,9 @@ "DataType": { "Value": "Bool" }, - "Tags": [], + "Tags": [ + "Deprecated" + ], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -44565,7 +51943,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Smoke": { "Name": "Smoke", @@ -44598,6 +51986,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "Opacity": { "Name": "Opacity", "Scriptability": "ReadWrite", @@ -44712,6 +52116,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -44731,6 +52138,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Opacity": { "Float32": 0.5 }, @@ -44748,6 +52158,9 @@ }, "TimeScale": { "Float32": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -44760,7 +52173,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Snap": { "Name": "Snap", @@ -44770,6 +52193,9 @@ "Superclass": "JointInstance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -44834,11 +52260,17 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -44851,7 +52283,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SocialService": { "Name": "SocialService", @@ -44862,7 +52304,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SolidModelContentProvider": { "Name": "SolidModelContentProvider", @@ -44873,7 +52325,17 @@ ], "Superclass": "CacheableContentProvider", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Sound": { "Name": "Sound", @@ -45374,6 +52836,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -45383,6 +52848,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LoopRegion": { "NumberRange": [ 0.0, @@ -45431,6 +52899,9 @@ "TimePosition": { "Float64": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Volume": { "Float32": 0.5 } @@ -45470,7 +52941,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SoundGroup": { "Name": "SoundGroup", @@ -45492,6 +52973,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -45501,12 +52985,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Volume": { "Float32": 0.5 } @@ -45605,6 +53095,9 @@ "AmbientReverb": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -45620,6 +53113,9 @@ "DopplerScale": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "RespectFilteringEnabled": { "Bool": false }, @@ -45632,6 +53128,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VolumetricAudio": { "Enum": 1 } @@ -45671,6 +53170,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "SparkleColor": { "Name": "SparkleColor", "Scriptability": "ReadWrite", @@ -45699,6 +53214,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -45711,6 +53229,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -45726,6 +53247,9 @@ }, "TimeScale": { "Float32": 1.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -45807,6 +53331,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -45918,6 +53445,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -46030,6 +53560,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -46047,7 +53580,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SpecialMesh": { "Name": "SpecialMesh", @@ -46069,6 +53612,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46078,6 +53624,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MeshId": { "Content": "" }, @@ -46107,6 +53656,9 @@ "TextureId": { "Content": "" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VertexColor": { "Vector3": [ 1.0, @@ -46142,6 +53694,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46176,14 +53731,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Radius": { "Float32": 1.0 }, @@ -46203,6 +53761,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -46260,6 +53821,9 @@ "Angle": { "Float32": 90.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46285,6 +53849,9 @@ "Face": { "Enum": 5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Range": { "Float32": 16.0 }, @@ -46296,6 +53863,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -46452,6 +54022,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46476,6 +54049,9 @@ "FreeLength": { "Float32": 1.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitsEnabled": { "Bool": false }, @@ -46503,6 +54079,9 @@ "Thickness": { "Float32": 0.1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -46670,7 +54249,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StandalonePluginScripts": { "Name": "StandalonePluginScripts", @@ -46678,6 +54267,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46687,11 +54279,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -46703,7 +54301,17 @@ ], "Superclass": "Pages", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StarterCharacterScripts": { "Name": "StarterCharacterScripts", @@ -46713,6 +54321,9 @@ "Superclass": "StarterPlayerScripts", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46722,11 +54333,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -46736,6 +54353,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46745,11 +54365,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -46850,6 +54476,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46859,6 +54488,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ResetPlayerGuiOnSpawn": { "Bool": true }, @@ -46877,6 +54509,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VirtualCursorMode": { "Enum": 0 } @@ -46891,6 +54526,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -46900,11 +54538,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -46931,21 +54575,6 @@ } } }, - "AnimationCompositorMode": { - "Name": "AnimationCompositorMode", - "Scriptability": "ReadWrite", - "DataType": { - "Enum": "AnimationCompositorMode" - }, - "Tags": [ - "NotBrowsable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "AutoJumpEnabled": { "Name": "AutoJumpEnabled", "Scriptability": "ReadWrite", @@ -47095,21 +54724,6 @@ } } }, - "DeathStyle": { - "Name": "DeathStyle", - "Scriptability": "ReadWrite", - "DataType": { - "Enum": "DeathStyle" - }, - "Tags": [ - "NotBrowsable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "DevCameraOcclusionMode": { "Name": "DevCameraOcclusionMode", "Scriptability": "ReadWrite", @@ -47488,21 +55102,6 @@ } } }, - "HumanoidStateMachineMode": { - "Name": "HumanoidStateMachineMode", - "Scriptability": "ReadWrite", - "DataType": { - "Enum": "HumanoidStateMachineMode" - }, - "Tags": [ - "NotBrowsable" - ], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "LoadCharacterAppearance": { "Name": "LoadCharacterAppearance", "Scriptability": "ReadWrite", @@ -47594,8 +55193,8 @@ "AllowCustomAnimations": { "Bool": true }, - "AnimationCompositorMode": { - "Enum": 0 + "Archivable": { + "Bool": true }, "Attributes": { "Attributes": {} @@ -47633,9 +55232,6 @@ "CharacterWalkSpeed": { "Float32": 16.0 }, - "DeathStyle": { - "Enum": 0 - }, "DefinesCapabilities": { "Bool": false }, @@ -47729,8 +55325,8 @@ "HealthDisplayDistance": { "Float32": 100.0 }, - "HumanoidStateMachineMode": { - "Enum": 0 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, "LoadCharacterAppearance": { "Bool": true @@ -47750,6 +55346,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UserEmotesEnabled": { "Bool": true } @@ -47763,6 +55362,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -47772,11 +55374,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -47789,7 +55397,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Stats": { "Name": "Stats", @@ -47960,7 +55578,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StatsItem": { "Name": "StatsItem", @@ -47987,7 +55615,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Status": { "Name": "Status", @@ -47997,7 +55635,17 @@ ], "Superclass": "Model", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StopWatchReporter": { "Name": "StopWatchReporter", @@ -48008,7 +55656,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StreamingService": { "Name": "StreamingService", @@ -48019,7 +55677,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StringValue": { "Name": "StringValue", @@ -48041,6 +55709,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -48050,12 +55721,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "String": "" } @@ -48288,19 +55965,6 @@ } } }, - "Automatically commit locked scripts when you save or publish to Roblox": { - "Name": "Automatically commit locked scripts when you save or publish to Roblox", - "Scriptability": "None", - "DataType": { - "Value": "Bool" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "Automatically trigger AI Code Completion": { "Name": "Automatically trigger AI Code Completion", "Scriptability": "None", @@ -48619,6 +56283,136 @@ } } }, + "DraggerActiveColor": { + "Name": "DraggerActiveColor", + "Scriptability": "None", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerMajorGridIncrement": { + "Name": "DraggerMajorGridIncrement", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerMaxSoftSnaps": { + "Name": "DraggerMaxSoftSnaps", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerPassiveColor": { + "Name": "DraggerPassiveColor", + "Scriptability": "None", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerShowHoverRuler": { + "Name": "DraggerShowHoverRuler", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerShowMeasurement": { + "Name": "DraggerShowMeasurement", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerShowTargetSnap": { + "Name": "DraggerShowTargetSnap", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerSoftSnapMarginFactor": { + "Name": "DraggerSoftSnapMarginFactor", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerSummonMarginFactor": { + "Name": "DraggerSummonMarginFactor", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "DraggerTiltRotateDuration": { + "Name": "DraggerTiltRotateDuration", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Enable Autocomplete": { "Name": "Enable Autocomplete", "Scriptability": "ReadWrite", @@ -48788,6 +56582,19 @@ } } }, + "EnableCodeAssist": { + "Name": "EnableCodeAssist", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "EnableIndentationRulers": { "Name": "EnableIndentationRulers", "Scriptability": "None", @@ -49091,6 +56898,32 @@ } } }, + "LoadAllBuiltinPluginsInRunModes": { + "Name": "LoadAllBuiltinPluginsInRunModes", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "LoadUserPluginsInRunModes": { + "Name": "LoadUserPluginsInRunModes", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "LuaDebuggerEnabled": { "Name": "LuaDebuggerEnabled", "Scriptability": "ReadWrite", @@ -49653,19 +57486,6 @@ } } }, - "Server Audio Behavior": { - "Name": "Server Audio Behavior", - "Scriptability": "ReadWrite", - "DataType": { - "Enum": "ServerAudioBehavior" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, "Set Pivot of Imported Parts": { "Name": "Set Pivot of Imported Parts", "Scriptability": "ReadWrite", @@ -50005,7 +57825,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioAssetService": { "Name": "StudioAssetService", @@ -50016,7 +57846,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioAttachment": { "Name": "StudioAttachment", @@ -50091,7 +57931,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioCallout": { "Name": "StudioCallout", @@ -50197,7 +58047,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioData": { "Name": "StudioData", @@ -50224,6 +58084,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50236,11 +58099,17 @@ "EnableScriptCollabByDefaultOnLoad": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50321,7 +58190,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioObjectBase": { "Name": "StudioObjectBase", @@ -50331,7 +58210,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioPublishService": { "Name": "StudioPublishService", @@ -50356,7 +58245,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioScriptDebugEventListener": { "Name": "StudioScriptDebugEventListener", @@ -50367,7 +58266,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioSdkService": { "Name": "StudioSdkService", @@ -50378,7 +58287,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioService": { "Name": "StudioService", @@ -50455,6 +58374,22 @@ } } }, + "ForceShowConstraintDetails": { + "Name": "ForceShowConstraintDetails", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "GridSize": { "Name": "GridSize", "Scriptability": "Read", @@ -50537,6 +58472,19 @@ } } }, + "Secrets": { + "Name": "Secrets", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ShowConstraintDetails": { "Name": "ShowConstraintDetails", "Scriptability": "Read", @@ -50585,7 +58533,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioTheme": { "Name": "StudioTheme", @@ -50595,7 +58553,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioWidget": { "Name": "StudioWidget", @@ -50605,7 +58573,17 @@ ], "Superclass": "StudioObjectBase", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StudioWidgetsService": { "Name": "StudioWidgetsService", @@ -50616,7 +58594,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StyleBase": { "Name": "StyleBase", @@ -50625,7 +58613,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "StyleDerive": { "Name": "StyleDerive", @@ -50663,6 +58661,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50672,6 +58673,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Index": { "Int32": -1 }, @@ -50680,6 +58684,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50703,6 +58710,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50712,11 +58722,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50788,6 +58804,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50797,6 +58816,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Index": { "Int32": -1 }, @@ -50811,6 +58833,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50820,6 +58845,9 @@ "Superclass": "StyleBase", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50829,11 +58857,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50846,7 +58880,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SunRaysEffect": { "Name": "SunRaysEffect", @@ -50881,6 +58925,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -50893,6 +58940,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Intensity": { "Float32": 0.25 }, @@ -50904,6 +58954,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -50925,6 +58978,19 @@ } } }, + "Color": { + "Name": "Color", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Color3" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ColorMap": { "Name": "ColorMap", "Scriptability": "ReadWrite", @@ -50995,18 +59061,31 @@ "AlphaMode": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, "Capabilities": { "SecurityCapabilities": 0 }, + "Color": { + "Color3": [ + 1.0, + 1.0, + 1.0 + ] + }, "ColorMap": { "Content": "" }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MetalnessMap": { "Content": "" }, @@ -51024,6 +59103,9 @@ }, "TexturePack": { "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -51200,6 +59282,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51230,6 +59315,9 @@ "Face": { "Enum": 5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LightInfluence": { "Float32": 0.0 }, @@ -51269,6 +59357,9 @@ "ToolPunchThroughDistance": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndexBehavior": { "Enum": 0 }, @@ -51324,7 +59415,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "SurfaceLight": { "Name": "SurfaceLight", @@ -51375,6 +59476,9 @@ "Angle": { "Float32": 90.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51400,6 +59504,9 @@ "Face": { "Enum": 5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Range": { "Float32": 16.0 }, @@ -51411,6 +59518,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -51434,6 +59544,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51442,14 +59555,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -51462,6 +59578,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true } @@ -51542,6 +59661,9 @@ "AccelerationTime": { "Float32": 0.0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51554,6 +59676,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MoveSpeedFactor": { "Float32": 1.0 }, @@ -51574,6 +59699,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -51653,7 +59781,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TaskScheduler": { "Name": "TaskScheduler", @@ -51725,7 +59863,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Team": { "Name": "Team", @@ -51807,6 +59955,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51819,6 +59970,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -51827,6 +59981,9 @@ }, "TeamColor": { "BrickColor": 1 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -51855,7 +60012,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TeamCreatePublishService": { "Name": "TeamCreatePublishService", @@ -51865,7 +60032,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TeamCreateService": { "Name": "TeamCreateService", @@ -51876,7 +60053,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Teams": { "Name": "Teams", @@ -51887,6 +60074,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -51896,11 +60086,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -51944,7 +60140,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TeleportOptions": { "Name": "TeleportOptions", @@ -51992,6 +60198,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -52001,6 +60210,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ReservedServerAccessCode": { "String": "" }, @@ -52015,6 +60227,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -52044,6 +60259,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -52053,11 +60271,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -52070,7 +60294,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TemporaryScriptService": { "Name": "TemporaryScriptService", @@ -52081,7 +60315,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Terrain": { "Name": "Terrain", @@ -52182,7 +60426,6 @@ "Value": "Float32" }, "Tags": [ - "NotBrowsable", "NotScriptable" ], "Kind": { @@ -52392,6 +60635,9 @@ "Anchored": { "Bool": true }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -52500,6 +60746,9 @@ "GrassLength": { "Float32": 0.7 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -52724,6 +60973,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -52866,6 +61118,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -52881,6 +61136,9 @@ "Face": { "Enum": 1 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaterialPattern": { "Enum": 0 }, @@ -52904,6 +61162,9 @@ }, "TexturePack": { "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -53014,6 +61275,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -53037,6 +61301,9 @@ 0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SmoothGrid": { "BinaryString": "AQU=" }, @@ -53045,6 +61312,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -53228,6 +61498,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -53246,6 +61519,9 @@ "ExecuteWithStudioRun": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "IsSleepAllowed": { "Bool": true }, @@ -53263,6 +61539,9 @@ }, "Timeout": { "Float64": 10.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -53467,6 +61746,35 @@ } } }, + "OpenTypeFeatures": { + "Name": "OpenTypeFeatures", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "OpenTypeFeaturesError": { + "Name": "OpenTypeFeaturesError", + "Scriptability": "Read", + "DataType": { + "Value": "String" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "OverlayNativeInput": { "Name": "OverlayNativeInput", "Scriptability": "None", @@ -53825,6 +62133,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -53846,9 +62157,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -53877,9 +62188,12 @@ "family": "rbxasset://fonts/families/LegacyArial.json", "weight": "Regular", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/arial.ttf" + "cachedFaceId": "rbxasset://fonts/Arimo-Regular.ttf" } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -53901,6 +62215,9 @@ "MultiLine": { "Bool": false }, + "OpenTypeFeatures": { + "String": "" + }, "PlaceholderColor3": { "Color3": [ 0.7, @@ -54021,6 +62338,9 @@ "TextYAlignment": { "Enum": 1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -54037,7 +62357,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextButton": { "Name": "TextButton", @@ -54202,6 +62532,35 @@ } } }, + "OpenTypeFeatures": { + "Name": "OpenTypeFeatures", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "OpenTypeFeaturesError": { + "Name": "OpenTypeFeaturesError", + "Scriptability": "Read", + "DataType": { + "Value": "String" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "RichText": { "Name": "RichText", "Scriptability": "ReadWrite", @@ -54447,6 +62806,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -54471,9 +62833,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -54499,9 +62861,12 @@ "family": "rbxasset://fonts/families/LegacyArial.json", "weight": "Regular", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/arial.ttf" + "cachedFaceId": "rbxasset://fonts/Arimo-Regular.ttf" } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -54523,6 +62888,9 @@ "Modal": { "Bool": false }, + "OpenTypeFeatures": { + "String": "" + }, "Position": { "UDim2": [ [ @@ -54633,6 +63001,9 @@ "TextYAlignment": { "Enum": 1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -54647,6 +63018,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -54656,11 +63030,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -54723,6 +63103,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -54738,6 +63121,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PrimaryAlias": { "String": "" }, @@ -54749,6 +63135,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -54760,7 +63149,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextChatMessage": { "Name": "TextChatMessage", @@ -54887,7 +63286,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextChatMessageProperties": { "Name": "TextChatMessageProperties", @@ -54935,6 +63344,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -54944,11 +63356,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -55048,6 +63466,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -55072,11 +63493,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -55088,7 +63515,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextFilterTranslatedResult": { "Name": "TextFilterTranslatedResult", @@ -55131,7 +63568,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextLabel": { "Name": "TextLabel", @@ -55296,6 +63743,35 @@ } } }, + "OpenTypeFeatures": { + "Name": "OpenTypeFeatures", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "OpenTypeFeaturesError": { + "Name": "OpenTypeFeaturesError", + "Scriptability": "Read", + "DataType": { + "Value": "String" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "RichText": { "Name": "RichText", "Scriptability": "ReadWrite", @@ -55541,6 +64017,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -55562,9 +64041,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -55590,9 +64069,12 @@ "family": "rbxasset://fonts/families/LegacyArial.json", "weight": "Regular", "style": "Normal", - "cachedFaceId": "rbxasset://fonts/arial.ttf" + "cachedFaceId": "rbxasset://fonts/Arimo-Regular.ttf" } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -55611,6 +64093,9 @@ "MaxVisibleGraphemes": { "Int32": -1 }, + "OpenTypeFeatures": { + "String": "" + }, "Position": { "UDim2": [ [ @@ -55715,6 +64200,9 @@ "TextYAlignment": { "Enum": 1 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -55732,7 +64220,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TextSource": { "Name": "TextSource", @@ -55787,7 +64285,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Texture": { "Name": "Texture", @@ -55848,6 +64356,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -55867,6 +64378,9 @@ "Face": { "Enum": 5 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "OffsetStudsU": { "Float32": 0.0 }, @@ -55891,13 +64405,36 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "ZIndex": { "Int32": 1 } } }, - "TextureGenerationMeshHandler": { - "Name": "TextureGenerationMeshHandler", + "TextureGenerationPartGroup": { + "Name": "TextureGenerationPartGroup", + "Tags": [ + "NotCreatable", + "NotReplicated" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "TextureGenerationService": { + "Name": "TextureGenerationService", "Tags": [ "NotCreatable", "NotReplicated", @@ -55905,7 +64442,37 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "TextureGenerationUnwrappingRequest": { + "Name": "TextureGenerationUnwrappingRequest", + "Tags": [ + "NotCreatable", + "NotReplicated" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ThirdPartyUserService": { "Name": "ThirdPartyUserService", @@ -55916,7 +64483,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ThreadState": { "Name": "ThreadState", @@ -55995,7 +64572,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TimerService": { "Name": "TimerService", @@ -56006,6 +64593,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56015,11 +64605,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -56032,7 +64628,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Tool": { "Name": "Tool", @@ -56183,6 +64789,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56224,6 +64833,9 @@ ] } }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -56287,6 +64899,9 @@ "ToolTip": { "String": "" }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -56348,6 +64963,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56363,6 +64981,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "RelativeTo": { "Enum": 0 }, @@ -56379,6 +65000,9 @@ 0.0 ] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -56527,6 +65151,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56548,6 +65175,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitEnabled": { "Bool": false }, @@ -56575,6 +65205,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -56587,7 +65220,17 @@ ], "Superclass": "StatsItem", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TouchInputService": { "Name": "TouchInputService", @@ -56598,6 +65241,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56607,11 +65253,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -56623,7 +65275,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TracerService": { "Name": "TracerService", @@ -56634,7 +65296,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TrackerLodController": { "Name": "TrackerLodController", @@ -56697,7 +65369,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TrackerStreamAnimation": { "Name": "TrackerStreamAnimation", @@ -56706,7 +65388,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Trail": { "Name": "Trail", @@ -56830,6 +65522,22 @@ } } }, + "LocalTransparencyModifier": { + "Name": "LocalTransparencyModifier", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "MaxLength": { "Name": "MaxLength", "Scriptability": "ReadWrite", @@ -56923,6 +65631,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -56963,6 +65674,9 @@ "FaceCamera": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Lifetime": { "Float32": 2.0 }, @@ -57009,6 +65723,9 @@ ] } }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WidthScale": { "NumberSequence": { "keypoints": [ @@ -57052,7 +65769,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TremoloSoundEffect": { "Name": "TremoloSoundEffect", @@ -57100,6 +65827,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57121,6 +65851,9 @@ "Frequency": { "Float32": 5.0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Priority": { "Int32": 0 }, @@ -57129,6 +65862,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -57232,9 +65968,79 @@ "Serialization": "Serializes" } } + }, + "UnscaledCofm": { + "Name": "UnscaledCofm", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "UnscaledVolInertiaDiags": { + "Name": "UnscaledVolInertiaDiags", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "UnscaledVolInertiaOffDiags": { + "Name": "UnscaledVolInertiaOffDiags", + "Scriptability": "None", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "UnscaledVolume": { + "Name": "UnscaledVolume", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TrussPart": { "Name": "TrussPart", @@ -57277,6 +66083,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57379,6 +66188,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -57482,6 +66294,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -57503,7 +66318,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Tween": { "Name": "Tween", @@ -57528,6 +66353,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57537,11 +66365,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -57570,7 +66404,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "TweenService": { "Name": "TweenService", @@ -57581,6 +66425,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57590,11 +66437,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -57607,6 +66460,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57616,11 +66472,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -57633,7 +66495,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UIAspectRatioConstraint": { "Name": "UIAspectRatioConstraint", @@ -57681,6 +66553,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "AspectRatio": { "Float32": 1.0 }, @@ -57699,11 +66574,17 @@ "DominantAxis": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -57714,7 +66595,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UIComponent": { "Name": "UIComponent", @@ -57723,7 +66614,17 @@ ], "Superclass": "UIBase", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UIConstraint": { "Name": "UIConstraint", @@ -57732,7 +66633,17 @@ ], "Superclass": "UIComponent", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UICorner": { "Name": "UICorner", @@ -57754,6 +66665,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57769,26 +66683,32 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "UIFlexItem": { - "Name": "UIFlexItem", + "UIDragDetector": { + "Name": "UIDragDetector", "Tags": [ "NotBrowsable" ], "Superclass": "UIComponent", "Properties": { - "FlexMode": { - "Name": "FlexMode", + "ActivatedCursorIcon": { + "Name": "ActivatedCursorIcon", "Scriptability": "ReadWrite", "DataType": { - "Enum": "UIFlexMode" + "Value": "Content" }, "Tags": [], "Kind": { @@ -57797,11 +66717,11 @@ } } }, - "GrowRatio": { - "Name": "GrowRatio", + "BoundingBehavior": { + "Name": "BoundingBehavior", "Scriptability": "ReadWrite", "DataType": { - "Value": "Float32" + "Enum": "UIDragDetectorBoundingBehavior" }, "Tags": [], "Kind": { @@ -57810,11 +66730,11 @@ } } }, - "ItemLineAlignment": { - "Name": "ItemLineAlignment", + "BoundingUI": { + "Name": "BoundingUI", "Scriptability": "ReadWrite", "DataType": { - "Enum": "ItemLineAlignment" + "Value": "Ref" }, "Tags": [], "Kind": { @@ -57823,11 +66743,11 @@ } } }, - "ShrinkRatio": { - "Name": "ShrinkRatio", + "CursorIcon": { + "Name": "CursorIcon", "Scriptability": "ReadWrite", "DataType": { - "Value": "Float32" + "Value": "Content" }, "Tags": [], "Kind": { @@ -57835,48 +66755,407 @@ "Serialization": "Serializes" } } - } - }, - "DefaultProperties": { - "Attributes": { - "Attributes": {} }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false - }, - "FlexMode": { - "Enum": 0 + "DragAxis": { + "Name": "DragAxis", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector2" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } }, - "GrowRatio": { - "Float32": 0.0 + "DragRelativity": { + "Name": "DragRelativity", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "UIDragDetectorDragRelativity" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } }, - "ItemLineAlignment": { - "Enum": 0 + "DragRotation": { + "Name": "DragRotation", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } }, - "ShrinkRatio": { - "Float32": 0.0 + "DragSpace": { + "Name": "DragSpace", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "UIDragDetectorDragSpace" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } }, - "SourceAssetId": { - "Int64": -1 + "DragStyle": { + "Name": "DragStyle", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "UIDragDetectorDragStyle" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } }, - "Tags": { - "Tags": [] - } - } - }, - "UIGradient": { - "Name": "UIGradient", - "Tags": [], - "Superclass": "UIComponent", - "Properties": { - "Color": { - "Name": "Color", + "DragUDim2": { + "Name": "DragUDim2", "Scriptability": "ReadWrite", "DataType": { - "Value": "ColorSequence" + "Value": "UDim2" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Enabled": { + "Name": "Enabled", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "MaxDragAngle": { + "Name": "MaxDragAngle", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "MaxDragTranslation": { + "Name": "MaxDragTranslation", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "UDim2" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "MinDragAngle": { + "Name": "MinDragAngle", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "MinDragTranslation": { + "Name": "MinDragTranslation", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "UDim2" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ReferenceUIInstance": { + "Name": "ReferenceUIInstance", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Ref" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ResponseStyle": { + "Name": "ResponseStyle", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "UIDragDetectorResponseStyle" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "ActivatedCursorIcon": { + "Content": "" + }, + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "BoundingBehavior": { + "Enum": 0 + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "CursorIcon": { + "Content": "" + }, + "DefinesCapabilities": { + "Bool": false + }, + "DragAxis": { + "Vector2": [ + 1.0, + 0.0 + ] + }, + "DragRelativity": { + "Enum": 0 + }, + "DragRotation": { + "Float32": 0.0 + }, + "DragSpace": { + "Enum": 0 + }, + "DragStyle": { + "Enum": 0 + }, + "DragUDim2": { + "UDim2": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 0 + ] + ] + }, + "Enabled": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "MaxDragAngle": { + "Float32": 0.0 + }, + "MaxDragTranslation": { + "UDim2": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 0 + ] + ] + }, + "MinDragAngle": { + "Float32": 0.0 + }, + "MinDragTranslation": { + "UDim2": [ + [ + 0.0, + 0 + ], + [ + 0.0, + 0 + ] + ] + }, + "ResponseStyle": { + "Enum": 0 + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "UIDragDetectorService": { + "Name": "UIDragDetectorService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "Instance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "UIFlexItem": { + "Name": "UIFlexItem", + "Tags": [], + "Superclass": "UIComponent", + "Properties": { + "FlexMode": { + "Name": "FlexMode", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "UIFlexMode" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "GrowRatio": { + "Name": "GrowRatio", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ItemLineAlignment": { + "Name": "ItemLineAlignment", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "ItemLineAlignment" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ShrinkRatio": { + "Name": "ShrinkRatio", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "FlexMode": { + "Enum": 0 + }, + "GrowRatio": { + "Float32": 0.0 + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "ItemLineAlignment": { + "Enum": 0 + }, + "ShrinkRatio": { + "Float32": 0.0 + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "UIGradient": { + "Name": "UIGradient", + "Tags": [], + "Superclass": "UIComponent", + "Properties": { + "Color": { + "Name": "Color", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "ColorSequence" }, "Tags": [], "Kind": { @@ -57939,6 +67218,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -57973,6 +67255,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Offset": { "Vector2": [ 0.0, @@ -58003,6 +67288,9 @@ } ] } + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -58097,6 +67385,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58136,6 +67427,9 @@ "FillDirectionMaxCells": { "Int32": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalAlignment": { "Enum": 1 }, @@ -58151,6 +67445,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalAlignment": { "Enum": 1 } @@ -58233,7 +67530,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UILayout": { "Name": "UILayout", @@ -58242,7 +67549,17 @@ ], "Superclass": "UIComponent", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UIListLayout": { "Name": "UIListLayout", @@ -58348,6 +67665,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58360,6 +67680,9 @@ "FillDirection": { "Enum": 1 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalAlignment": { "Enum": 1 }, @@ -58384,6 +67707,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalAlignment": { "Enum": 1 }, @@ -58454,6 +67780,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58463,6 +67792,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "PaddingBottom": { "UDim": [ 0.0, @@ -58492,6 +67824,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -58638,6 +67973,9 @@ "Animated": { "Bool": true }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58662,6 +68000,9 @@ "GamepadInputEnabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalAlignment": { "Enum": 1 }, @@ -58689,6 +68030,9 @@ "TweenTime": { "Float32": 1.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalAlignment": { "Enum": 1 } @@ -58714,6 +68058,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58723,6 +68070,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Scale": { "Float32": 1.0 }, @@ -58731,6 +68081,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -58767,6 +68120,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58776,6 +68132,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxSize": { "Vector2": [ null, @@ -58793,6 +68152,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -58884,6 +68246,9 @@ "ApplyStrokeMode": { "Enum": 0 }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58903,6 +68268,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LineJoinMode": { "Enum": 0 }, @@ -58917,6 +68285,9 @@ }, "Transparency": { "Float32": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -58979,6 +68350,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -58997,6 +68371,9 @@ "FillEmptySpaceRows": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "HorizontalAlignment": { "Enum": 1 }, @@ -59024,6 +68401,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "VerticalAlignment": { "Enum": 1 } @@ -59062,6 +68442,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -59071,6 +68454,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxTextSize": { "Int32": 100 }, @@ -59082,6 +68468,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -59094,6 +68483,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "AssetId": { "Content": "" }, @@ -59208,6 +68600,9 @@ "FrontSurfaceInput": { "Enum": 0 }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "InitialSize": { "Vector3": [ 1.0, @@ -59275,7 +68670,7 @@ "Float32": 0.0 }, "RenderFidelity": { - "Enum": 1 + "Enum": 0 }, "RightParamA": { "Float32": -0.5 @@ -59330,6 +68725,33 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UnscaledCofm": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolInertiaOffDiags": { + "Vector3": [ + null, + null, + null + ] + }, + "UnscaledVolume": { + "Float32": null + }, "UsePartColor": { "Bool": false }, @@ -59401,6 +68823,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -59416,6 +68841,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LimitsEnabled": { "Bool": false }, @@ -59434,6 +68862,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -59445,6 +68876,9 @@ "Superclass": "BaseRemoteEvent", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -59454,11 +68888,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -59488,6 +68928,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -59500,11 +68943,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -59590,6 +69039,22 @@ } } }, + "ChatTranslationLocale": { + "Name": "ChatTranslationLocale", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ChatTranslationToggleEnabled": { "Name": "ChatTranslationToggleEnabled", "Scriptability": "None", @@ -59724,6 +69189,22 @@ } } }, + "FramerateCap": { + "Name": "FramerateCap", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "Fullscreen": { "Name": "Fullscreen", "Scriptability": "None", @@ -59763,6 +69244,22 @@ } } }, + "HapticStrength": { + "Name": "HapticStrength", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "HasEverUsedVR": { "Name": "HasEverUsedVR", "Scriptability": "None", @@ -59823,6 +69320,19 @@ } } }, + "MasterVolumeStudio": { + "Name": "MasterVolumeStudio", + "Scriptability": "None", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "MicroProfilerWebServerEnabled": { "Name": "MicroProfilerWebServerEnabled", "Scriptability": "None", @@ -59976,6 +69486,22 @@ } } }, + "PreferredTextSize": { + "Name": "PreferredTextSize", + "Scriptability": "None", + "DataType": { + "Enum": "PreferredTextSize" + }, + "Tags": [ + "Hidden", + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "PreferredTransparency": { "Name": "PreferredTransparency", "Scriptability": "None", @@ -59992,6 +69518,21 @@ } } }, + "QualityResetLevel": { + "Name": "QualityResetLevel", + "Scriptability": "None", + "DataType": { + "Value": "Int32" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "RCCProfilerRecordFrameRate": { "Name": "RCCProfilerRecordFrameRate", "Scriptability": "ReadWrite", @@ -60389,7 +69930,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "UserInputService": { "Name": "UserInputService", @@ -60488,6 +70039,7 @@ "Value": "Bool" }, "Tags": [ + "Deprecated", "Hidden" ], "Kind": { @@ -60762,233 +70314,91 @@ } } }, - "DefaultProperties": {} - }, - "UserNotification": { - "Name": "UserNotification", - "Tags": [], - "Superclass": "Instance", - "Properties": { - "Id": { - "Name": "Id", - "Scriptability": "Read", - "DataType": { - "Value": "String" - }, - "Tags": [ - "NotReplicated", - "ReadOnly" - ], - "Kind": { - "Canonical": { - "Serialization": "DoesNotSerialize" - } - } - }, - "Payload": { - "Name": "Payload", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "Ref" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - } - }, "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false + "Archivable": { + "Bool": true }, - "SourceAssetId": { - "Int64": -1 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "Tags": { - "Tags": [] + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "UserNotificationPayload": { - "Name": "UserNotificationPayload", - "Tags": [], + "UserService": { + "Name": "UserService", + "Tags": [ + "NotCreatable", + "Service" + ], "Superclass": "Instance", - "Properties": { - "AnalyticsData": { - "Name": "AnalyticsData", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "Ref" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "JoinExperience": { - "Name": "JoinExperience", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "Ref" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "MessageId": { - "Name": "MessageId", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "String" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - }, - "Type": { - "Name": "Type", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "String" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - } - }, + "Properties": {}, "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false - }, - "MessageId": { - "String": "" - }, - "SourceAssetId": { - "Int64": -1 + "Archivable": { + "Bool": true }, - "Tags": { - "Tags": [] + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "Type": { - "String": "" + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "UserNotificationPayloadAnalyticsData": { - "Name": "UserNotificationPayloadAnalyticsData", - "Tags": [], - "Superclass": "Instance", - "Properties": { - "Category": { - "Name": "Category", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "String" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - } - }, + "UserSettings": { + "Name": "UserSettings", + "Tags": [ + "NotCreatable" + ], + "Superclass": "GenericSettings", + "Properties": {}, "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "Category": { - "String": "" - }, - "DefinesCapabilities": { - "Bool": false + "Archivable": { + "Bool": true }, - "SourceAssetId": { - "Int64": -1 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "Tags": { - "Tags": [] + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "UserNotificationPayloadJoinExperience": { - "Name": "UserNotificationPayloadJoinExperience", - "Tags": [], - "Superclass": "Instance", - "Properties": { - "LaunchData": { - "Name": "LaunchData", - "Scriptability": "ReadWrite", - "DataType": { - "Value": "String" - }, - "Tags": [], - "Kind": { - "Canonical": { - "Serialization": "Serializes" - } - } - } - }, + "UserStorageService": { + "Name": "UserStorageService", + "Tags": [ + "NotCreatable", + "NotReplicated", + "Service" + ], + "Superclass": "LocalStorageService", + "Properties": {}, "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false - }, - "LaunchData": { - "String": "" + "Archivable": { + "Bool": true }, - "SourceAssetId": { - "Int64": -1 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "Tags": { - "Tags": [] + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "UserNotificationPayloadParameterValue": { - "Name": "UserNotificationPayloadParameterValue", - "Tags": [], + "VRService": { + "Name": "VRService", + "Tags": [ + "NotCreatable", + "Service" + ], "Superclass": "Instance", "Properties": { - "Int64Value": { - "Name": "Int64Value", + "AutomaticScaling": { + "Name": "AutomaticScaling", "Scriptability": "ReadWrite", "DataType": { - "Value": "Int64" + "Enum": "VRScaling" }, "Tags": [], "Kind": { @@ -60997,11 +70407,11 @@ } } }, - "StringValue": { - "Name": "StringValue", + "AvatarGestures": { + "Name": "AvatarGestures", "Scriptability": "ReadWrite", "DataType": { - "Value": "String" + "Value": "Bool" }, "Tags": [], "Kind": { @@ -61009,82 +70419,17 @@ "Serialization": "Serializes" } } - } - }, - "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "Capabilities": { - "SecurityCapabilities": 0 }, - "DefinesCapabilities": { - "Bool": false - }, - "Int64Value": { - "Int64": 0 - }, - "SourceAssetId": { - "Int64": -1 - }, - "StringValue": { - "String": "" - }, - "Tags": { - "Tags": [] - } - } - }, - "UserService": { - "Name": "UserService", - "Tags": [ - "NotCreatable", - "Service" - ], - "Superclass": "Instance", - "Properties": {}, - "DefaultProperties": {} - }, - "UserSettings": { - "Name": "UserSettings", - "Tags": [ - "NotCreatable" - ], - "Superclass": "GenericSettings", - "Properties": {}, - "DefaultProperties": {} - }, - "UserStorageService": { - "Name": "UserStorageService", - "Tags": [ - "NotCreatable", - "NotReplicated", - "Service" - ], - "Superclass": "LocalStorageService", - "Properties": {}, - "DefaultProperties": {} - }, - "VRService": { - "Name": "VRService", - "Tags": [ - "NotCreatable", - "Service" - ], - "Superclass": "Instance", - "Properties": { - "AutomaticScaling": { - "Name": "AutomaticScaling", + "ControllerModels": { + "Name": "ControllerModels", "Scriptability": "ReadWrite", "DataType": { - "Enum": "VRScaling" + "Enum": "VRControllerModelMode" }, - "Tags": [ - "NotReplicated" - ], + "Tags": [], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } }, @@ -61114,7 +70459,7 @@ "Tags": [], "Kind": { "Canonical": { - "Serialization": "DoesNotSerialize" + "Serialization": "Serializes" } } }, @@ -61124,7 +70469,9 @@ "DataType": { "Enum": "UserCFrame" }, - "Tags": [], + "Tags": [ + "NotReplicated" + ], "Kind": { "Canonical": { "Serialization": "DoesNotSerialize" @@ -61148,6 +70495,19 @@ } } }, + "LaserPointer": { + "Name": "LaserPointer", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "VRLaserPointerMode" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "PointerHitCFrame": { "Name": "PointerHitCFrame", "Scriptability": "None", @@ -61172,7 +70532,8 @@ "Value": "Bool" }, "Tags": [ - "Hidden" + "Hidden", + "NotReplicated" ], "Kind": { "Canonical": { @@ -61187,7 +70548,8 @@ "Value": "Float32" }, "Tags": [ - "Hidden" + "Hidden", + "NotReplicated" ], "Kind": { "Canonical": { @@ -61280,20 +70642,44 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, + "AutomaticScaling": { + "Enum": 0 + }, + "AvatarGestures": { + "Bool": false + }, "Capabilities": { "SecurityCapabilities": 0 }, + "ControllerModels": { + "Enum": 1 + }, "DefinesCapabilities": { "Bool": false }, + "FadeOutViewOnCollision": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "LaserPointer": { + "Enum": 1 + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -61305,7 +70691,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "ValueBase": { "Name": "ValueBase", @@ -61314,7 +70710,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "Vector3Curve": { "Name": "Vector3Curve", @@ -61322,6 +70728,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -61331,11 +70740,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -61359,6 +70774,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -61368,12 +70786,18 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Value": { "Vector3": [ 0.0, @@ -61432,6 +70856,9 @@ "ApplyAtCenterOfMass": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -61454,6 +70881,9 @@ 0.0 ] }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "RelativeTo": { "Enum": 0 }, @@ -61463,6 +70893,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": false } @@ -61474,6 +70907,9 @@ "Superclass": "Controller", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -61483,11 +70919,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -61654,6 +71096,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -61762,6 +71207,9 @@ "HeadsUpDisplay": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LeftParamA": { "Float32": -0.5 }, @@ -61886,6 +71334,9 @@ "TurnSpeed": { "Float32": 1.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Velocity": { "Vector3": [ 0.0, @@ -61954,6 +71405,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62024,6 +71478,9 @@ "Enabled": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "MaxVelocity": { "Float32": 0.0 }, @@ -62032,6 +71489,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -62075,7 +71535,17 @@ } } }, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "VideoCaptureService": { "Name": "VideoCaptureService", @@ -62119,6 +71589,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62128,11 +71601,92 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "VideoDeviceInput": { + "Name": "VideoDeviceInput", + "Tags": [ + "NotReplicated" + ], + "Superclass": "Instance", + "Properties": { + "Active": { + "Name": "Active", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "CameraId": { + "Name": "CameraId", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "CaptureQuality": { + "Name": "CaptureQuality", + "Scriptability": "ReadWrite", + "DataType": { + "Enum": "VideoDeviceCaptureQuality" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "IsReady": { + "Name": "IsReady", + "Scriptability": "Read", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "NotReplicated", + "ReadOnly" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -62301,6 +71855,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62322,9 +71879,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -62345,6 +71902,9 @@ "Draggable": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Interactable": { "Bool": true }, @@ -62417,6 +71977,9 @@ "TimePosition": { "Float64": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Video": { "Content": "" }, @@ -62440,6 +72003,9 @@ "Superclass": "Instance", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62449,11 +72015,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -62608,6 +72180,9 @@ 0.0 ] }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62629,9 +72204,9 @@ }, "BorderColor3": { "Color3": [ - 0.10588236, + 0.105882354, 0.16470589, - 0.20784315 + 0.20784314 ] }, "BorderMode": { @@ -62681,6 +72256,9 @@ "Draggable": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ImageColor3": { "Color3": [ 1.0, @@ -62768,6 +72346,9 @@ "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -62801,6 +72382,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62810,11 +72394,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -62827,7 +72417,17 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "VisibilityCheckDispatcher": { "Name": "VisibilityCheckDispatcher", @@ -62837,28 +72437,204 @@ ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, - "VisibilityService": { - "Name": "VisibilityService", + "Visit": { + "Name": "Visit", "Tags": [ "NotCreatable", + "NotReplicated", "Service" ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, - "Visit": { - "Name": "Visit", + "VisualizationMode": { + "Name": "VisualizationMode", + "Tags": [], + "Superclass": "Instance", + "Properties": { + "Enabled": { + "Name": "Enabled", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Title": { + "Name": "Title", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "ToolTip": { + "Name": "ToolTip", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "Enabled": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "Title": { + "String": "" + }, + "ToolTip": { + "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "VisualizationModeCategory": { + "Name": "VisualizationModeCategory", + "Tags": [], + "Superclass": "Instance", + "Properties": { + "Enabled": { + "Name": "Enabled", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Title": { + "Name": "Title", + "Scriptability": "None", + "DataType": { + "Value": "String" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "DefinesCapabilities": { + "Bool": false + }, + "Enabled": { + "Bool": false + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "Title": { + "String": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "VisualizationModeService": { + "Name": "VisualizationModeService", "Tags": [ "NotCreatable", - "NotReplicated", "Service" ], "Superclass": "Instance", "Properties": {}, - "DefaultProperties": {} + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } }, "VoiceChatInternal": { "Name": "VoiceChatInternal", @@ -62889,6 +72665,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -62898,11 +72677,17 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -62933,9 +72718,7 @@ "DataType": { "Enum": "AudioApiRollout" }, - "Tags": [ - "NotBrowsable" - ], + "Tags": [], "Kind": { "Canonical": { "Serialization": "Serializes" @@ -62987,6 +72770,21 @@ } } }, + "UseRME": { + "Name": "UseRME", + "Scriptability": "None", + "DataType": { + "Value": "Bool" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "VoiceChatEnabledForPlaceOnRcc": { "Name": "VoiceChatEnabledForPlaceOnRcc", "Scriptability": "None", @@ -63019,6 +72817,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -63031,12 +72832,18 @@ "EnableDefaultVoice": { "Bool": true }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, "Tags": { "Tags": [] }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "UseAudioApi": { "Enum": 1 } @@ -63051,6 +72858,9 @@ "Anchored": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -63104,139 +72914,251 @@ ] } }, - "CanCollide": { - "Bool": true - }, - "CanQuery": { - "Bool": true - }, - "CanTouch": { - "Bool": true - }, + "CanCollide": { + "Bool": true + }, + "CanQuery": { + "Bool": true + }, + "CanTouch": { + "Bool": true + }, + "Capabilities": { + "SecurityCapabilities": 0 + }, + "CastShadow": { + "Bool": true + }, + "CollisionGroup": { + "String": "Default" + }, + "CollisionGroupId": { + "Int32": 0 + }, + "Color": { + "Color3uint8": [ + 163, + 162, + 165 + ] + }, + "CustomPhysicalProperties": { + "PhysicalProperties": "Default" + }, + "DefinesCapabilities": { + "Bool": false + }, + "EnableFluidForces": { + "Bool": true + }, + "FormFactor": { + "Enum": 1 + }, + "FrontParamA": { + "Float32": -0.5 + }, + "FrontParamB": { + "Float32": 0.5 + }, + "FrontSurface": { + "Enum": 0 + }, + "FrontSurfaceInput": { + "Enum": 0 + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "LeftParamA": { + "Float32": -0.5 + }, + "LeftParamB": { + "Float32": 0.5 + }, + "LeftSurface": { + "Enum": 0 + }, + "LeftSurfaceInput": { + "Enum": 0 + }, + "Locked": { + "Bool": false + }, + "Massless": { + "Bool": false + }, + "Material": { + "Enum": 256 + }, + "MaterialVariantSerialized": { + "String": "" + }, + "PivotOffset": { + "CFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + }, + "Reflectance": { + "Float32": 0.0 + }, + "RightParamA": { + "Float32": -0.5 + }, + "RightParamB": { + "Float32": 0.5 + }, + "RightSurface": { + "Enum": 0 + }, + "RightSurfaceInput": { + "Enum": 0 + }, + "RootPriority": { + "Int32": 0 + }, + "RotVelocity": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "Size": { + "Vector3": [ + 4.0, + 1.2, + 2.0 + ] + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "TopParamA": { + "Float32": -0.5 + }, + "TopParamB": { + "Float32": 0.5 + }, + "TopSurface": { + "Enum": 0 + }, + "TopSurfaceInput": { + "Enum": 0 + }, + "Transparency": { + "Float32": 0.0 + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "Velocity": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + } + } + }, + "Weld": { + "Name": "Weld", + "Tags": [], + "Superclass": "JointInstance", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "C0": { + "CFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + }, + "C1": { + "CFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + }, "Capabilities": { "SecurityCapabilities": 0 }, - "CastShadow": { - "Bool": true - }, - "CollisionGroup": { - "String": "Default" - }, - "CollisionGroupId": { - "Int32": 0 - }, - "Color": { - "Color3uint8": [ - 163, - 162, - 165 - ] - }, - "CustomPhysicalProperties": { - "PhysicalProperties": "Default" - }, "DefinesCapabilities": { "Bool": false }, - "EnableFluidForces": { + "Enabled": { "Bool": true }, - "FormFactor": { - "Enum": 1 - }, - "FrontParamA": { - "Float32": -0.5 - }, - "FrontParamB": { - "Float32": 0.5 - }, - "FrontSurface": { - "Enum": 0 - }, - "FrontSurfaceInput": { - "Enum": 0 - }, - "LeftParamA": { - "Float32": -0.5 - }, - "LeftParamB": { - "Float32": 0.5 - }, - "LeftSurface": { - "Enum": 0 - }, - "LeftSurfaceInput": { - "Enum": 0 - }, - "Locked": { - "Bool": false - }, - "Massless": { - "Bool": false - }, - "Material": { - "Enum": 256 - }, - "MaterialVariantSerialized": { - "String": "" - }, - "PivotOffset": { - "CFrame": { - "position": [ - 0.0, - 0.0, - 0.0 - ], - "orientation": [ - [ - 1.0, - 0.0, - 0.0 - ], - [ - 0.0, - 1.0, - 0.0 - ], - [ - 0.0, - 0.0, - 1.0 - ] - ] - } - }, - "Reflectance": { - "Float32": 0.0 - }, - "RightParamA": { - "Float32": -0.5 - }, - "RightParamB": { - "Float32": 0.5 - }, - "RightSurface": { - "Enum": 0 - }, - "RightSurfaceInput": { - "Enum": 0 - }, - "RootPriority": { - "Int32": 0 - }, - "RotVelocity": { - "Vector3": [ - 0.0, - 0.0, - 0.0 - ] - }, - "Size": { - "Vector3": [ - 4.0, - 1.2, - 2.0 - ] + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, "SourceAssetId": { "Int64": -1 @@ -63244,105 +73166,8 @@ "Tags": { "Tags": [] }, - "TopParamA": { - "Float32": -0.5 - }, - "TopParamB": { - "Float32": 0.5 - }, - "TopSurface": { - "Enum": 0 - }, - "TopSurfaceInput": { - "Enum": 0 - }, - "Transparency": { - "Float32": 0.0 - }, - "Velocity": { - "Vector3": [ - 0.0, - 0.0, - 0.0 - ] - } - } - }, - "Weld": { - "Name": "Weld", - "Tags": [], - "Superclass": "JointInstance", - "Properties": {}, - "DefaultProperties": { - "Attributes": { - "Attributes": {} - }, - "C0": { - "CFrame": { - "position": [ - 0.0, - 0.0, - 0.0 - ], - "orientation": [ - [ - 1.0, - 0.0, - 0.0 - ], - [ - 0.0, - 1.0, - 0.0 - ], - [ - 0.0, - 0.0, - 1.0 - ] - ] - } - }, - "C1": { - "CFrame": { - "position": [ - 0.0, - 0.0, - 0.0 - ], - "orientation": [ - [ - 1.0, - 0.0, - 0.0 - ], - [ - 0.0, - 1.0, - 0.0 - ], - [ - 0.0, - 0.0, - 1.0 - ] - ] - } - }, - "Capabilities": { - "SecurityCapabilities": 0 - }, - "DefinesCapabilities": { - "Bool": false - }, - "Enabled": { - "Bool": true - }, - "SourceAssetId": { - "Int64": -1 - }, - "Tags": { - "Tags": [] + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -63499,6 +73324,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -63534,6 +73362,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -63542,6 +73373,9 @@ }, "Tags": { "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -63622,6 +73456,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -63631,6 +73468,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "SourceAssetId": { "Int64": -1 }, @@ -63642,6 +73482,9 @@ }, "TargetName": { "String": "Input" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -63671,6 +73514,9 @@ "AlwaysOnTop": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -63705,14 +73551,17 @@ }, "Color3": { "Color3": [ - 0.050980397, - 0.41176474, + 0.050980393, + 0.4117647, 0.6745098 ] }, "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "Scale": { "Vector3": [ 1.0, @@ -63736,6 +73585,9 @@ "Transparency": { "Float32": 0.0 }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "Visible": { "Bool": true }, @@ -63795,6 +73647,21 @@ } } }, + "CSGAsyncDynamicCollision": { + "Name": "CSGAsyncDynamicCollision", + "Scriptability": "None", + "DataType": { + "Enum": "CSGAsyncDynamicCollision" + }, + "Tags": [ + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ClientAnimatorThrottling": { "Name": "ClientAnimatorThrottling", "Scriptability": "ReadWrite", @@ -63873,14 +73740,14 @@ } } }, - "DistributedGameTime": { - "Name": "DistributedGameTime", - "Scriptability": "ReadWrite", + "DecreaseMinimumPartDensityMode": { + "Name": "DecreaseMinimumPartDensityMode", + "Scriptability": "None", "DataType": { - "Value": "Float64" + "Enum": "DecreaseMinimumPartDensityMode" }, "Tags": [ - "NotReplicated" + "NotScriptable" ], "Kind": { "Canonical": { @@ -63888,14 +73755,14 @@ } } }, - "EditorLiveScripting": { - "Name": "EditorLiveScripting", - "Scriptability": "None", + "DistributedGameTime": { + "Name": "DistributedGameTime", + "Scriptability": "ReadWrite", "DataType": { - "Enum": "EditorLiveScripting" + "Value": "Float64" }, "Tags": [ - "NotScriptable" + "NotReplicated" ], "Kind": { "Canonical": { @@ -64005,16 +73872,35 @@ } } }, + "InsertPoint": { + "Name": "InsertPoint", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Vector3" + }, + "Tags": [ + "NotReplicated" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, "InterpolationThrottling": { "Name": "InterpolationThrottling", "Scriptability": "ReadWrite", "DataType": { "Enum": "InterpolationThrottlingMode" }, - "Tags": [], + "Tags": [ + "Deprecated", + "Hidden", + "NotReplicated" + ], "Kind": { "Canonical": { - "Serialization": "Serializes" + "Serialization": "DoesNotSerialize" } } }, @@ -64048,6 +73934,21 @@ } } }, + "MoverConstraintRootBehavior": { + "Name": "MoverConstraintRootBehavior", + "Scriptability": "None", + "DataType": { + "Enum": "MoverConstraintRootBehaviorMode" + }, + "Tags": [ + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "PhysicsSteppingMethod": { "Name": "PhysicsSteppingMethod", "Scriptability": "None", @@ -64108,6 +74009,21 @@ } } }, + "RenderingCacheOptimizations": { + "Name": "RenderingCacheOptimizations", + "Scriptability": "None", + "DataType": { + "Enum": "RenderingCacheOptimizationMode" + }, + "Tags": [ + "NotScriptable" + ], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, "ReplicateInstanceDestroySetting": { "Name": "ReplicateInstanceDestroySetting", "Scriptability": "None", @@ -64315,12 +74231,18 @@ "AllowThirdPartySales": { "Bool": false }, + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, "AvatarUnificationMode": { "Enum": 0 }, + "CSGAsyncDynamicCollision": { + "Enum": 0 + }, "Capabilities": { "SecurityCapabilities": 0 }, @@ -64330,15 +74252,15 @@ "CollisionGroupData": { "BinaryString": "AQEABP////8HRGVmYXVsdA==" }, + "DecreaseMinimumPartDensityMode": { + "Enum": 0 + }, "DefinesCapabilities": { "Bool": false }, "DistributedGameTime": { "Float64": 0.0 }, - "EditorLiveScripting": { - "Enum": 0 - }, "ExplicitAutoJoints": { "Bool": true }, @@ -64358,10 +74280,10 @@ "Gravity": { "Float32": 196.2 }, - "IKControlConstraintSupport": { - "Enum": 0 + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "InterpolationThrottling": { + "IKControlConstraintSupport": { "Enum": 0 }, "LevelOfDetail": { @@ -64409,6 +74331,9 @@ "ModelStreamingMode": { "Enum": 0 }, + "MoverConstraintRootBehavior": { + "Enum": 0 + }, "NeedsPivotMigration": { "Bool": false }, @@ -64424,6 +74349,9 @@ "RejectCharacterDeletions": { "Enum": 0 }, + "RenderingCacheOptimizations": { + "Enum": 0 + }, "ReplicateInstanceDestroySetting": { "Enum": 0 }, @@ -64463,6 +74391,9 @@ "TouchesUseCollisionGroups": { "Bool": false }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, "WorldPivotData": { "OptionalCFrame": { "position": [ @@ -64491,12 +74422,63 @@ } } }, + "WorkspaceAnnotation": { + "Name": "WorkspaceAnnotation", + "Tags": [], + "Superclass": "Annotation", + "Properties": { + "Adornee": { + "Name": "Adornee", + "Scriptability": "None", + "DataType": { + "Value": "Ref" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + }, + "Position": { + "Name": "Position", + "Scriptability": "None", + "DataType": { + "Value": "CFrame" + }, + "Tags": [ + "Hidden" + ], + "Kind": { + "Canonical": { + "Serialization": "DoesNotSerialize" + } + } + } + }, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, "WorldModel": { "Name": "WorldModel", "Tags": [], "Superclass": "WorldRoot", "Properties": {}, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -64506,6 +74488,9 @@ "DefinesCapabilities": { "Bool": false }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "LevelOfDetail": { "Enum": 0 }, @@ -64535,30 +74520,181 @@ ] } }, - "ModelMeshSize": { - "Vector3": [ - 0.0, - 0.0, - 0.0 - ] - }, - "ModelStreamingMode": { - "Enum": 0 + "ModelMeshSize": { + "Vector3": [ + 0.0, + 0.0, + 0.0 + ] + }, + "ModelStreamingMode": { + "Enum": 0 + }, + "NeedsPivotMigration": { + "Bool": false + }, + "Scale": { + "Float32": 1.0 + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + }, + "WorldPivotData": { + "OptionalCFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + } + } + }, + "WorldRoot": { + "Name": "WorldRoot", + "Tags": [ + "NotCreatable" + ], + "Superclass": "Model", + "Properties": {}, + "DefaultProperties": { + "Archivable": { + "Bool": true + }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" + } + } + }, + "WrapDeformer": { + "Name": "WrapDeformer", + "Tags": [ + "NotBrowsable" + ], + "Superclass": "BaseWrap", + "Properties": { + "Amount": { + "Name": "Amount", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Float32" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "Enabled": { + "Name": "Enabled", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Bool" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + }, + "RenderMeshID": { + "Name": "RenderMeshID", + "Scriptability": "ReadWrite", + "DataType": { + "Value": "Content" + }, + "Tags": [], + "Kind": { + "Canonical": { + "Serialization": "Serializes" + } + } + } + }, + "DefaultProperties": { + "Amount": { + "Float32": 1.0 + }, + "Archivable": { + "Bool": true + }, + "Attributes": { + "Attributes": {} + }, + "CageMeshId": { + "Content": "" + }, + "CageOrigin": { + "CFrame": { + "position": [ + 0.0, + 0.0, + 0.0 + ], + "orientation": [ + [ + 1.0, + 0.0, + 0.0 + ], + [ + 0.0, + 1.0, + 0.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ] + } + }, + "Capabilities": { + "SecurityCapabilities": 0 }, - "NeedsPivotMigration": { + "DefinesCapabilities": { "Bool": false }, - "Scale": { - "Float32": 1.0 + "Enabled": { + "Bool": true }, - "SourceAssetId": { - "Int64": -1 + "HSRAssetId": { + "Content": "" }, - "Tags": { - "Tags": [] + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" }, - "WorldPivotData": { - "OptionalCFrame": { + "ImportOrigin": { + "CFrame": { "position": [ 0.0, 0.0, @@ -64582,18 +74718,24 @@ ] ] } + }, + "RenderMeshID": { + "Content": "" + }, + "SourceAssetId": { + "Int64": -1 + }, + "Tags": { + "Tags": [] + }, + "TemporaryCageMeshId": { + "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, - "WorldRoot": { - "Name": "WorldRoot", - "Tags": [ - "NotCreatable" - ], - "Superclass": "Model", - "Properties": {}, - "DefaultProperties": {} - }, "WrapLayer": { "Name": "WrapLayer", "Tags": [], @@ -64769,6 +74911,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -64842,6 +74987,9 @@ "HSRAssetId": { "Content": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ImportOrigin": { "CFrame": { "position": [ @@ -64917,6 +75065,9 @@ }, "TemporaryReferenceId": { "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } }, @@ -64972,6 +75123,9 @@ } }, "DefaultProperties": { + "Archivable": { + "Bool": true + }, "Attributes": { "Attributes": {} }, @@ -65013,6 +75167,9 @@ "HSRAssetId": { "Content": "" }, + "HistoryId": { + "UniqueId": "00000000000000000000000000000000" + }, "ImportOrigin": { "CFrame": { "position": [ @@ -65050,6 +75207,9 @@ }, "TemporaryCageMeshId": { "Content": "" + }, + "UniqueId": { + "UniqueId": "00000000000000000000000000000000" } } } @@ -65116,6 +75276,9 @@ "AdEventType": { "name": "AdEventType", "items": { + "RewardedAdGrant": 4, + "RewardedAdLoaded": 3, + "RewardedAdUnloaded": 5, "UserCompletedVideo": 2, "VideoLoaded": 0, "VideoRemoved": 1 @@ -65136,6 +75299,26 @@ "Undefined": 0 } }, + "AdUIEventType": { + "name": "AdUIEventType", + "items": { + "AdLabelClicked": 0, + "CloseButtonClicked": 5, + "FullscreenButtonClicked": 2, + "PauseButtonClicked": 4, + "PlayButtonClicked": 3, + "VolumeButtonClicked": 1, + "WhyThisAdClicked": 6 + } + }, + "AdUIType": { + "name": "AdUIType", + "items": { + "Image": 1, + "None": 0, + "Video": 2 + } + }, "AdUnitStatus": { "name": "AdUnitStatus", "items": { @@ -65168,6 +75351,14 @@ "Transparency": 1 } }, + "AnalyticsCustomFieldKeys": { + "name": "AnalyticsCustomFieldKeys", + "items": { + "CustomField01": 0, + "CustomField02": 1, + "CustomField03": 2 + } + }, "AnalyticsEconomyAction": { "name": "AnalyticsEconomyAction", "items": { @@ -65176,6 +75367,24 @@ "Spend": 2 } }, + "AnalyticsEconomyFlowType": { + "name": "AnalyticsEconomyFlowType", + "items": { + "Sink": 0, + "Source": 1 + } + }, + "AnalyticsEconomyTransactionType": { + "name": "AnalyticsEconomyTransactionType", + "items": { + "ContextualPurchase": 3, + "Gameplay": 2, + "IAP": 0, + "Onboarding": 5, + "Shop": 1, + "TimedReward": 4 + } + }, "AnalyticsLogLevel": { "name": "AnalyticsLogLevel", "items": { @@ -65197,6 +75406,15 @@ "Fail": 4 } }, + "AnalyticsProgressionType": { + "name": "AnalyticsProgressionType", + "items": { + "Complete": 3, + "Custom": 0, + "Fail": 2, + "Start": 1 + } + }, "AnimationClipFromVideoStatus": { "name": "AnimationClipFromVideoStatus", "items": { @@ -65214,14 +75432,6 @@ "Timeout": 10 } }, - "AnimationCompositorMode": { - "name": "AnimationCompositorMode", - "items": { - "Default": 0, - "Disabled": 2, - "Enabled": 1 - } - }, "AnimationPriority": { "name": "AnimationPriority", "items": { @@ -65242,6 +75452,15 @@ "Enabled": 2 } }, + "AppLifecycleManagerState": { + "name": "AppLifecycleManagerState", + "items": { + "Active": 1, + "Detached": 0, + "Hidden": 3, + "Inactive": 2 + } + }, "AppShellActionType": { "name": "AppShellActionType", "items": { @@ -65391,6 +75610,22 @@ "Enabled": 2 } }, + "AudioFilterType": { + "name": "AudioFilterType", + "items": { + "Bandpass": 9, + "HighShelf": 2, + "Highpass12dB": 6, + "Highpass24dB": 7, + "Highpass48dB": 8, + "LowShelf": 1, + "Lowpass12dB": 3, + "Lowpass24dB": 4, + "Lowpass48dB": 5, + "Notch": 10, + "Peak": 0 + } + }, "AudioSubType": { "name": "AudioSubType", "items": { @@ -65479,6 +75714,7 @@ "UserAudio": 32, "UserAudioEligible": 16, "UserBanned": 256, + "UserVerifiedForVoice": 512, "UserVideo": 128, "UserVideoEligible": 64 } @@ -65492,6 +75728,27 @@ "InspectMenu": 3 } }, + "AvatarGenerationError": { + "name": "AvatarGenerationError", + "items": { + "Canceled": 3, + "DownloadFailed": 2, + "JobNotFound": 6, + "None": 0, + "Offensive": 4, + "Timeout": 5, + "Unknown": 1 + } + }, + "AvatarGenerationJobStatus": { + "name": "AvatarGenerationJobStatus", + "items": { + "Completed": 2, + "Failed": 3, + "InProgress": 1, + "NotStarted": 0 + } + }, "AvatarItemType": { "name": "AvatarItemType", "items": { @@ -65641,6 +75898,14 @@ "RobloxRoundDropdownButton": 5 } }, + "CSGAsyncDynamicCollision": { + "name": "CSGAsyncDynamicCollision", + "items": { + "Default": 0, + "Disabled": 1, + "Experimental": 2 + } + }, "CageType": { "name": "CageType", "items": { @@ -65832,13 +76097,24 @@ "Enabled": 2 } }, + "CloseReason": { + "name": "CloseReason", + "items": { + "DeveloperShutdown": 2, + "DeveloperUpdate": 3, + "OutOfMemory": 5, + "RobloxMaintenance": 1, + "ServerEmpty": 4, + "Unknown": 0 + } + }, "CollaboratorStatus": { "name": "CollaboratorStatus", "items": { - "Editing3D": 0, - "None": 3, - "PrivateScripting": 2, - "Scripting": 1 + "Editing3D": 1, + "None": 0, + "PrivateScripting": 3, + "Scripting": 2 } }, "CollisionFidelity": { @@ -65982,6 +76258,7 @@ "NetworkSend": 297, "NetworkTimeout": 298, "OK": 0, + "PlacelaunchCreatorBan": 600, "PlacelaunchCustomMessage": 610, "PlacelaunchDisabled": 515, "PlacelaunchError": 516, @@ -66108,15 +76385,6 @@ "UpdateAsync": 2 } }, - "DeathStyle": { - "name": "DeathStyle", - "items": { - "ClassicBreakApart": 1, - "Default": 0, - "NonGraphic": 2, - "Scriptable": 3 - } - }, "DebuggerEndReason": { "name": "DebuggerEndReason", "items": { @@ -66170,6 +76438,14 @@ "Timeout": 1 } }, + "DecreaseMinimumPartDensityMode": { + "name": "DecreaseMinimumPartDensityMode", + "items": { + "Default": 0, + "Disabled": 1, + "Enabled": 2 + } + }, "DevCameraOcclusionMode": { "name": "DevCameraOcclusionMode", "items": { @@ -66245,6 +76521,20 @@ "TerrainVoxels": 19 } }, + "DeviceFeatureType": { + "name": "DeviceFeatureType", + "items": { + "DeviceCapture": 0 + } + }, + "DeviceLevel": { + "name": "DeviceLevel", + "items": { + "High": 2, + "Low": 0, + "Medium": 1 + } + }, "DeviceType": { "name": "DeviceType", "items": { @@ -66307,6 +76597,14 @@ "TranslateViewPlane": 4 } }, + "DragDetectorPermissionPolicy": { + "name": "DragDetectorPermissionPolicy", + "items": { + "Everybody": 1, + "Nobody": 0, + "Scriptable": 2 + } + }, "DragDetectorResponseStyle": { "name": "DragDetectorResponseStyle", "items": { @@ -66353,14 +76651,6 @@ "Sine": 1 } }, - "EditorLiveScripting": { - "name": "EditorLiveScripting", - "items": { - "Default": 0, - "Disabled": 1, - "Enabled": 2 - } - }, "ElasticBehavior": { "name": "ElasticBehavior", "items": { @@ -66466,8 +76756,14 @@ "Arcade": 13, "Arial": 1, "ArialBold": 2, + "Arimo": 50, + "ArimoBold": 51, "Bangers": 22, "Bodoni": 7, + "BuilderSans": 46, + "BuilderSansBold": 48, + "BuilderSansExtraBold": 49, + "BuilderSansMedium": 47, "Cartoon": 9, "Code": 10, "Creepster": 23, @@ -66622,6 +76918,15 @@ "R6": 0 } }, + "GamepadType": { + "name": "GamepadType", + "items": { + "PS4": 1, + "PS5": 2, + "Unknown": 0, + "XboxOne": 3 + } + }, "GearGenreSetting": { "name": "GearGenreSetting", "items": { @@ -66686,6 +76991,7 @@ "name": "GuiType", "items": { "Core": 0, + "CoreBillboards": 4, "Custom": 1, "CustomBillboards": 3, "PlayerNameplates": 2 @@ -66698,6 +77004,16 @@ "Resize": 0 } }, + "HapticEffectType": { + "name": "HapticEffectType", + "items": { + "GameplayCollision": 4, + "GameplayExplosion": 3, + "UIClick": 1, + "UIHover": 0, + "UINotification": 2 + } + }, "HighlightDepthMode": { "name": "HighlightDepthMode", "items": { @@ -66810,15 +77126,6 @@ "R6": 0 } }, - "HumanoidStateMachineMode": { - "name": "HumanoidStateMachineMode", - "items": { - "Default": 0, - "Legacy": 1, - "LuaStateMachine": 3, - "NoStateMachine": 2 - } - }, "HumanoidStateType": { "name": "HumanoidStateType", "items": { @@ -66878,10 +77185,21 @@ "Pending": 1 } }, + "ImageAlphaType": { + "name": "ImageAlphaType", + "items": { + "Default": 1, + "LockCanvasAlpha": 2, + "LockCanvasColor": 3 + } + }, "ImageCombineType": { "name": "ImageCombineType", "items": { + "Add": 3, + "AlphaBlend": 5, "BlendSourceOver": 1, + "Multiply": 4, "Overwrite": 2 } }, @@ -66948,6 +77266,12 @@ "Stretch": 4 } }, + "JoinSource": { + "name": "JoinSource", + "items": { + "CreatedItemAttribution": 1 + } + }, "JointCreationMode": { "name": "JointCreationMode", "items": { @@ -67061,6 +77385,13 @@ "Menu": 319, "Minus": 45, "Mode": 313, + "MouseBackButton": 1021, + "MouseLeftButton": 1018, + "MouseMiddleButton": 1020, + "MouseNoButton": 1022, + "MouseRightButton": 1019, + "MouseX": 1023, + "MouseY": 1024, "N": 110, "Nine": 57, "NumLock": 300, @@ -67313,6 +77644,47 @@ "Enabled": 2 } }, + "LocationType": { + "name": "LocationType", + "items": { + "Camera": 1, + "Character": 0, + "ObjectPosition": 2 + } + }, + "MarketplaceBulkPurchasePromptStatus": { + "name": "MarketplaceBulkPurchasePromptStatus", + "items": { + "Aborted": 2, + "Completed": 1, + "Error": 3 + } + }, + "MarketplaceItemPurchaseStatus": { + "name": "MarketplaceItemPurchaseStatus", + "items": { + "AlreadyOwned": 3, + "InsufficientMembership": 12, + "InsufficientRobux": 4, + "NotAvailableForPurchaser": 8, + "NotForSale": 7, + "PlaceInvalid": 13, + "PriceMismatch": 9, + "PurchaserIsSeller": 11, + "QuantityLimitExceeded": 5, + "QuotaExceeded": 6, + "SoldOut": 10, + "Success": 1, + "SystemError": 2 + } + }, + "MarketplaceProductType": { + "name": "MarketplaceProductType", + "items": { + "AvatarAsset": 1, + "AvatarBundle": 2 + } + }, "MarkupKind": { "name": "MarkupKind", "items": { @@ -67469,6 +77841,16 @@ "PersistentPerPlayer": 3 } }, + "ModerationStatus": { + "name": "ModerationStatus", + "items": { + "Invalid": 5, + "NotApplicable": 4, + "NotReviewed": 3, + "ReviewedApproved": 1, + "ReviewedRejected": 2 + } + }, "ModifierKey": { "name": "ModifierKey", "items": { @@ -67496,6 +77878,14 @@ "Stopping": 3 } }, + "MoverConstraintRootBehaviorMode": { + "name": "MoverConstraintRootBehaviorMode", + "items": { + "Default": 0, + "Disabled": 1, + "Enabled": 2 + } + }, "MuteState": { "name": "MuteState", "items": { @@ -67527,6 +77917,12 @@ "Unknown": 0 } }, + "NoiseType": { + "name": "NoiseType", + "items": { + "SimplexGabor": 0 + } + }, "NormalId": { "name": "NormalId", "items": { @@ -67799,6 +78195,15 @@ "TwoAttachment": 1 } }, + "PreferredTextSize": { + "name": "PreferredTextSize", + "items": { + "Large": 2, + "Larger": 3, + "Largest": 4, + "Medium": 1 + } + }, "PrimalPhysicsSolver": { "name": "PrimalPhysicsSolver", "items": { @@ -67978,6 +78383,14 @@ "Last": 2000 } }, + "RenderingCacheOptimizationMode": { + "name": "RenderingCacheOptimizationMode", + "items": { + "Default": 0, + "Disabled": 1, + "Enabled": 2 + } + }, "RenderingTestComparisonMethod": { "name": "RenderingTestComparisonMethod", "items": { @@ -68133,6 +78546,14 @@ "Server": 1 } }, + "RunState": { + "name": "RunState", + "items": { + "Paused": 2, + "Running": 1, + "Stopped": 0 + } + }, "RuntimeUndoBehavior": { "name": "RuntimeUndoBehavior", "items": { @@ -68249,6 +78670,28 @@ "Y": 2 } }, + "SecurityCapability": { + "name": "SecurityCapability", + "items": { + "AccessOutsideWrite": 2, + "Animation": 15, + "AssetRequire": 3, + "Audio": 8, + "Avatar": 16, + "Basic": 7, + "CSG": 13, + "Chat": 14, + "CreateInstances": 6, + "DataStore": 9, + "LoadString": 4, + "Network": 10, + "Physics": 11, + "RunClientScript": 0, + "RunServerScript": 1, + "ScriptGlobals": 5, + "UI": 12 + } + }, "SelectionBehavior": { "name": "SelectionBehavior", "items": { @@ -68288,14 +78731,6 @@ "OnRead": 0 } }, - "ServerAudioBehavior": { - "name": "ServerAudioBehavior", - "items": { - "Enabled": 0, - "Muted": 1, - "OnlineGame": 2 - } - }, "ServerLiveEditingMode": { "name": "ServerLiveEditingMode", "items": { @@ -68425,6 +78860,7 @@ "items": { "CloseDoc": 2, "CloseStudio": 1, + "LogOut": 3, "None": 0 } }, @@ -68514,6 +78950,7 @@ "AICOOverlayText": 128, "AttributeCog": 119, "Border": 31, + "BreakpointMarker": 136, "BrightText": 40, "Button": 17, "ButtonBorder": 91, @@ -68543,8 +78980,10 @@ "DiffLineNum": 78, "DiffLineNumAdditionBackground": 81, "DiffLineNumDeletionBackground": 82, + "DiffLineNumHover": 137, "DiffLineNumNoChangeBackground": 80, "DiffLineNumSeparatorBackground": 79, + "DiffLineNumSeparatorBackgroundHover": 138, "DiffTextAddition": 72, "DiffTextAdditionBackground": 76, "DiffTextDeletion": 73, @@ -68655,6 +79094,16 @@ "NoSupports": 2 } }, + "SubscriptionExpirationReason": { + "name": "SubscriptionExpirationReason", + "items": { + "Lapsed": 4, + "ProductDeleted": 1, + "ProductInactive": 0, + "SubscriberCancelled": 2, + "SubscriberRefunded": 3 + } + }, "SubscriptionPaymentStatus": { "name": "SubscriptionPaymentStatus", "items": { @@ -68668,6 +79117,16 @@ "Month": 0 } }, + "SubscriptionState": { + "name": "SubscriptionState", + "items": { + "Expired": 4, + "NeverSubscribed": 0, + "SubscribedRenewalPaymentPending": 3, + "SubscribedWillNotRenew": 2, + "SubscribedWillRenew": 1 + } + }, "SurfaceConstraint": { "name": "SurfaceConstraint", "items": { @@ -68737,11 +79196,12 @@ "name": "TeleportMethod", "items": { "TeleportPartyAsync": 3, + "TeleportToInstanceBack": 5, "TeleportToPlaceInstance": 1, "TeleportToPrivateServer": 2, "TeleportToSpawnByName": 0, "TeleportToVIPServer": 4, - "TeleportUnknown": 5 + "TeleportUnknown": 6 } }, "TeleportResult": { @@ -68771,6 +79231,7 @@ "name": "TeleportType", "items": { "ToInstance": 1, + "ToInstanceBack": 4, "ToPlace": 0, "ToReservedServer": 2, "ToVIPServer": 3 @@ -68847,7 +79308,8 @@ "name": "TextTruncate", "items": { "AtEnd": 1, - "None": 0 + "None": 0, + "SplitWord": 2 } }, "TextXAlignment": { @@ -68866,14 +79328,6 @@ "Top": 0 } }, - "TextureGenerationMeshHandlerUnwrapMode": { - "name": "TextureGenerationMeshHandlerUnwrapMode", - "items": { - "Always": 1, - "Never": 0, - "WhenInvalidUVsDetected": 2 - } - }, "TextureMode": { "name": "TextureMode", "items": { @@ -68943,6 +79397,13 @@ "Precise": 2 } }, + "TonemapperPreset": { + "name": "TonemapperPreset", + "items": { + "Default": 0, + "Retro": 1 + } + }, "TopBottom": { "name": "TopBottom", "items": { @@ -69039,6 +79500,14 @@ "LODCameraRecommendDisable": 0 } }, + "TrackerType": { + "name": "TrackerType", + "items": { + "Face": 1, + "None": 0, + "UpperBody": 2 + } + }, "TriStateBoolean": { "name": "TriStateBoolean", "items": { @@ -69054,6 +79523,47 @@ "Completed": 1 } }, + "UIDragDetectorBoundingBehavior": { + "name": "UIDragDetectorBoundingBehavior", + "items": { + "Automatic": 0, + "EntireObject": 1, + "HitPoint": 2 + } + }, + "UIDragDetectorDragRelativity": { + "name": "UIDragDetectorDragRelativity", + "items": { + "Absolute": 0, + "Relative": 1 + } + }, + "UIDragDetectorDragSpace": { + "name": "UIDragDetectorDragSpace", + "items": { + "LayerCollector": 1, + "Parent": 0, + "Reference": 2 + } + }, + "UIDragDetectorDragStyle": { + "name": "UIDragDetectorDragStyle", + "items": { + "Rotate": 2, + "Scriptable": 3, + "TranslateLine": 1, + "TranslatePlane": 0 + } + }, + "UIDragDetectorResponseStyle": { + "name": "UIDragDetectorResponseStyle", + "items": { + "CustomOffset": 2, + "CustomScale": 3, + "Offset": 0, + "Scale": 1 + } + }, "UIFlexAlignment": { "name": "UIFlexAlignment", "items": { @@ -69149,6 +79659,21 @@ "Normal": 1 } }, + "VRControllerModelMode": { + "name": "VRControllerModelMode", + "items": { + "Disabled": 0, + "Transparent": 1 + } + }, + "VRLaserPointerMode": { + "name": "VRLaserPointerMode", + "items": { + "Disabled": 0, + "DualPointer": 2, + "Pointer": 1 + } + }, "VRSafetyBubbleMode": { "name": "VRSafetyBubbleMode", "items": { @@ -69223,6 +79748,39 @@ "Small": 1 } }, + "VideoDeviceCaptureQuality": { + "name": "VideoDeviceCaptureQuality", + "items": { + "Default": 0, + "High": 3, + "Low": 1, + "Medium": 2 + } + }, + "VideoError": { + "name": "VideoError", + "items": { + "AllocFailed": 4, + "BadParameter": 3, + "CodecCloseFailed": 6, + "CodecInitFailed": 5, + "CreateFailed": 14, + "DecodeFailed": 7, + "DownloadFailed": 11, + "EAgain": 2, + "EncodeFailed": 13, + "Eof": 1, + "Generic": 10, + "NoPermission": 15, + "NoService": 16, + "Ok": 0, + "ParsingFailed": 8, + "ReleaseFailed": 17, + "StreamNotFound": 12, + "Unknown": 18, + "Unsupported": 9 + } + }, "ViewMode": { "name": "ViewMode", "items": { diff --git a/plugin/src/App/Components/ClassIcon.lua b/plugin/src/App/Components/ClassIcon.lua new file mode 100644 index 000000000..c3e46e0d2 --- /dev/null +++ b/plugin/src/App/Components/ClassIcon.lua @@ -0,0 +1,126 @@ +local StudioService = game:GetService("StudioService") +local AssetService = game:GetService("AssetService") + +local Rojo = script:FindFirstAncestor("Rojo") +local Plugin = Rojo.Plugin +local Packages = Rojo.Packages + +local Roact = require(Packages.Roact) + +local e = Roact.createElement + +local EditableImage = require(Plugin.App.Components.EditableImage) + +local imageCache = {} +local function getImageSizeAndPixels(image) + if not imageCache[image] then + local editableImage = AssetService:CreateEditableImageAsync(image) + imageCache[image] = { + Size = editableImage.Size, + Pixels = editableImage:ReadPixels(Vector2.zero, editableImage.Size), + } + end + + return imageCache[image].Size, table.clone(imageCache[image].Pixels) +end + +local function getRecoloredClassIcon(className, color) + local iconProps = StudioService:GetClassIcon(className) + + if iconProps and color then + local success, editableImageSize, editableImagePixels = pcall(function() + local size, pixels = getImageSizeAndPixels(iconProps.Image) + + local minVal, maxVal = math.huge, -math.huge + for i = 1, #pixels, 4 do + if pixels[i + 3] == 0 then + continue + end + local pixelVal = math.max(pixels[i], pixels[i + 1], pixels[i + 2]) + + minVal = math.min(minVal, pixelVal) + maxVal = math.max(maxVal, pixelVal) + end + + local hue, sat, val = color:ToHSV() + for i = 1, #pixels, 4 do + if pixels[i + 3] == 0 then + continue + end + + local pixelVal = math.max(pixels[i], pixels[i + 1], pixels[i + 2]) + local newVal = val + if minVal < maxVal then + -- Remap minVal - maxVal to val*0.9 - val + newVal = val * (0.9 + 0.1 * (pixelVal - minVal) / (maxVal - minVal)) + end + + local newPixelColor = Color3.fromHSV(hue, sat, newVal) + pixels[i], pixels[i + 1], pixels[i + 2] = newPixelColor.R, newPixelColor.G, newPixelColor.B + end + return size, pixels + end) + if success then + iconProps.EditableImagePixels = editableImagePixels + iconProps.EditableImageSize = editableImageSize + end + end + + return iconProps +end + +local ClassIcon = Roact.PureComponent:extend("ClassIcon") + +function ClassIcon:init() + self.state = { + iconProps = nil, + } +end + +function ClassIcon:updateIcon() + local props = self.props + local iconProps = getRecoloredClassIcon(props.className, props.color) + self:setState({ + iconProps = iconProps, + }) +end + +function ClassIcon:didMount() + self:updateIcon() +end + +function ClassIcon:didUpdate(lastProps) + if lastProps.className ~= self.props.className or lastProps.color ~= self.props.color then + self:updateIcon() + end +end + +function ClassIcon:render() + local iconProps = self.state.iconProps + if not iconProps then + return nil + end + + return e( + "ImageLabel", + { + Size = self.props.size, + Position = self.props.position, + LayoutOrder = self.props.layoutOrder, + AnchorPoint = self.props.anchorPoint, + ImageTransparency = self.props.transparency, + Image = iconProps.Image, + ImageRectOffset = iconProps.ImageRectOffset, + ImageRectSize = iconProps.ImageRectSize, + BackgroundTransparency = 1, + }, + if iconProps.EditableImagePixels + then e(EditableImage, { + size = iconProps.EditableImageSize, + pixels = iconProps.EditableImagePixels, + }) + else nil + ) +end + +return ClassIcon diff --git a/plugin/src/App/Components/EditableImage.lua b/plugin/src/App/Components/EditableImage.lua new file mode 100644 index 000000000..501a37eee --- /dev/null +++ b/plugin/src/App/Components/EditableImage.lua @@ -0,0 +1,41 @@ +local Rojo = script:FindFirstAncestor("Rojo") +local Packages = Rojo.Packages + +local Roact = require(Packages.Roact) + +local e = Roact.createElement + +local EditableImage = Roact.PureComponent:extend("EditableImage") + +function EditableImage:init() + self.ref = Roact.createRef() +end + +function EditableImage:writePixels() + local image = self.ref.current + if not image then + return + end + if not self.props.pixels then + return + end + + image:WritePixels(Vector2.zero, self.props.size, self.props.pixels) +end + +function EditableImage:render() + return e("EditableImage", { + Size = self.props.size, + [Roact.Ref] = self.ref, + }) +end + +function EditableImage:didMount() + self:writePixels() +end + +function EditableImage:didUpdate() + self:writePixels() +end + +return EditableImage diff --git a/plugin/src/App/Components/PatchVisualizer/ChangeList.lua b/plugin/src/App/Components/PatchVisualizer/ChangeList.lua index ce01b8010..2f10d4587 100644 --- a/plugin/src/App/Components/PatchVisualizer/ChangeList.lua +++ b/plugin/src/App/Components/PatchVisualizer/ChangeList.lua @@ -155,7 +155,7 @@ function ChangeList:render() local headerRow = changes[1] local headers = e("Frame", { - Size = UDim2.new(1, 0, 0, 30), + Size = UDim2.new(1, 0, 0, 24), BackgroundTransparency = rowTransparency, BackgroundColor3 = theme.Diff.Row, LayoutOrder = 0, @@ -214,7 +214,7 @@ function ChangeList:render() local isWarning = metadata.isWarning rows[row] = e("Frame", { - Size = UDim2.new(1, 0, 0, 30), + Size = UDim2.new(1, 0, 0, 24), BackgroundTransparency = row % 2 ~= 0 and rowTransparency or 1, BackgroundColor3 = theme.Diff.Row, BorderSizePixel = 0, @@ -269,8 +269,8 @@ function ChangeList:render() }, { Headers = headers, Values = e(ScrollingFrame, { - size = UDim2.new(1, 0, 1, -30), - position = UDim2.new(0, 0, 0, 30), + size = UDim2.new(1, 0, 1, -24), + position = UDim2.new(0, 0, 0, 24), contentSize = self.contentSize, transparency = props.transparency, }, rows), diff --git a/plugin/src/App/Components/PatchVisualizer/DomLabel.lua b/plugin/src/App/Components/PatchVisualizer/DomLabel.lua index 41ec0b8e9..a842dcbc5 100644 --- a/plugin/src/App/Components/PatchVisualizer/DomLabel.lua +++ b/plugin/src/App/Components/PatchVisualizer/DomLabel.lua @@ -1,5 +1,4 @@ local SelectionService = game:GetService("Selection") -local StudioService = game:GetService("StudioService") local Rojo = script:FindFirstAncestor("Rojo") local Plugin = Rojo.Plugin @@ -15,7 +14,8 @@ local bindingUtil = require(Plugin.App.bindingUtil) local e = Roact.createElement local ChangeList = require(script.Parent.ChangeList) -local Tooltip = require(script.Parent.Parent.Tooltip) +local Tooltip = require(Plugin.App.Components.Tooltip) +local ClassIcon = require(Plugin.App.Components.ClassIcon) local Expansion = Roact.Component:extend("Expansion") @@ -28,8 +28,8 @@ function Expansion:render() return e("Frame", { BackgroundTransparency = 1, - Size = UDim2.new(1, -props.indent, 1, -30), - Position = UDim2.new(0, props.indent, 0, 30), + Size = UDim2.new(1, -props.indent, 1, -24), + Position = UDim2.new(0, props.indent, 0, 24), }, { ChangeList = e(ChangeList, { changes = props.changeList, @@ -44,7 +44,7 @@ local DomLabel = Roact.Component:extend("DomLabel") function DomLabel:init() local initHeight = self.props.elementHeight:getValue() - self.expanded = initHeight > 30 + self.expanded = initHeight > 24 self.motor = Flipper.SingleMotor.new(initHeight) self.binding = bindingUtil.fromMotor(self.motor) @@ -53,7 +53,7 @@ function DomLabel:init() renderExpansion = self.expanded, }) self.motor:onStep(function(value) - local renderExpansion = value > 30 + local renderExpansion = value > 24 self.props.setElementHeight(value) if self.props.updateEvent then @@ -81,7 +81,7 @@ function DomLabel:didUpdate(prevProps) then -- Close the expansion when the domlabel is changed to a different thing self.expanded = false - self.motor:setGoal(Flipper.Spring.new(30, { + self.motor:setGoal(Flipper.Spring.new(24, { frequency = 5, dampingRatio = 1, })) @@ -90,17 +90,49 @@ end function DomLabel:render() local props = self.props + local depth = props.depth or 1 return Theme.with(function(theme) - local iconProps = StudioService:GetClassIcon(props.className) - local indent = (props.depth or 0) * 20 + 25 + local color = if props.isWarning + then theme.Diff.Warning + elseif props.patchType then theme.Diff[props.patchType] + else theme.TextColor + + local indent = (depth - 1) * 12 + 15 -- Line guides help indent depth remain readable local lineGuides = {} - for i = 1, props.depth or 0 do - lineGuides["Line_" .. i] = e("Frame", { - Size = UDim2.new(0, 2, 1, 2), - Position = UDim2.new(0, (20 * i) + 15, 0, -1), + for i = 2, depth do + if props.depthsComplete[i] then + continue + end + if props.isFinalChild and i == depth then + -- This line stops halfway down to merge with our connector for the right angle + lineGuides["Line_" .. i] = e("Frame", { + Size = UDim2.new(0, 2, 0, 15), + Position = UDim2.new(0, (12 * (i - 1)) + 6, 0, -1), + BorderSizePixel = 0, + BackgroundTransparency = props.transparency, + BackgroundColor3 = theme.BorderedContainer.BorderColor, + }) + else + -- All other lines go all the way + -- with the exception of the final element, which stops halfway down + lineGuides["Line_" .. i] = e("Frame", { + Size = UDim2.new(0, 2, 1, if props.isFinalElement then -9 else 2), + Position = UDim2.new(0, (12 * (i - 1)) + 6, 0, -1), + BorderSizePixel = 0, + BackgroundTransparency = props.transparency, + BackgroundColor3 = theme.BorderedContainer.BorderColor, + }) + end + end + + if depth ~= 1 then + lineGuides["Connector"] = e("Frame", { + Size = UDim2.new(0, 8, 0, 2), + Position = UDim2.new(0, 2 + (12 * props.depth), 0, 12), + AnchorPoint = Vector2.xAxis, BorderSizePixel = 0, BackgroundTransparency = props.transparency, BackgroundColor3 = theme.BorderedContainer.BorderColor, @@ -109,9 +141,8 @@ function DomLabel:render() return e("Frame", { ClipsDescendants = true, - BackgroundColor3 = if props.patchType then theme.Diff[props.patchType] else nil, - BorderSizePixel = 0, - BackgroundTransparency = props.patchType and props.transparency or 1, + BackgroundTransparency = if props.elementIndex % 2 == 0 then 0.985 else 1, + BackgroundColor3 = theme.Diff.Row, Size = self.binding:map(function(expand) return UDim2.new(1, 0, 0, expand) end), @@ -141,8 +172,8 @@ function DomLabel:render() if props.changeList then self.expanded = not self.expanded - local goalHeight = 30 - + (if self.expanded then math.clamp(#props.changeList * 30, 30, 30 * 6) else 0) + local goalHeight = 24 + + (if self.expanded then math.clamp(#props.changeList * 24, 24, 24 * 6) else 0) self.motor:setGoal(Flipper.Spring.new(goalHeight, { frequency = 5, dampingRatio = 1, @@ -174,40 +205,74 @@ function DomLabel:render() DiffIcon = if props.patchType then e("ImageLabel", { Image = Assets.Images.Diff[props.patchType], - ImageColor3 = theme.AddressEntry.PlaceholderColor, + ImageColor3 = color, ImageTransparency = props.transparency, BackgroundTransparency = 1, - Size = UDim2.new(0, 20, 0, 20), - Position = UDim2.new(0, 0, 0, 15), + Size = UDim2.new(0, 14, 0, 14), + Position = UDim2.new(0, 0, 0, 12), AnchorPoint = Vector2.new(0, 0.5), }) else nil, - ClassIcon = e("ImageLabel", { - Image = iconProps.Image, - ImageTransparency = props.transparency, - ImageRectOffset = iconProps.ImageRectOffset, - ImageRectSize = iconProps.ImageRectSize, - BackgroundTransparency = 1, - Size = UDim2.new(0, 20, 0, 20), - Position = UDim2.new(0, indent, 0, 15), - AnchorPoint = Vector2.new(0, 0.5), + ClassIcon = e(ClassIcon, { + className = props.className, + color = color, + transparency = props.transparency, + size = UDim2.new(0, 16, 0, 16), + position = UDim2.new(0, indent + 2, 0, 12), + anchorPoint = Vector2.new(0, 0.5), }), InstanceName = e("TextLabel", { - Text = (if props.isWarning then "âš  " else "") .. props.name .. (props.hint and string.format( - ' %s', - theme.AddressEntry.PlaceholderColor:ToHex(), - props.hint - ) or ""), + Text = (if props.isWarning then "âš  " else "") .. props.name, RichText = true, BackgroundTransparency = 1, - Font = Enum.Font.GothamMedium, + Font = if props.patchType then Enum.Font.GothamBold else Enum.Font.GothamMedium, TextSize = 14, - TextColor3 = if props.isWarning then theme.Diff.Warning else theme.TextColor, + TextColor3 = color, TextXAlignment = Enum.TextXAlignment.Left, TextTransparency = props.transparency, TextTruncate = Enum.TextTruncate.AtEnd, - Size = UDim2.new(1, -indent - 50, 0, 30), - Position = UDim2.new(0, indent + 30, 0, 0), + Size = UDim2.new(1, -indent - 50, 0, 24), + Position = UDim2.new(0, indent + 22, 0, 0), + }), + ChangeInfo = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(1, -indent - 80, 0, 24), + Position = UDim2.new(1, -2, 0, 0), + AnchorPoint = Vector2.new(1, 0), + }, { + Layout = e("UIListLayout", { + FillDirection = Enum.FillDirection.Horizontal, + HorizontalAlignment = Enum.HorizontalAlignment.Right, + VerticalAlignment = Enum.VerticalAlignment.Center, + SortOrder = Enum.SortOrder.LayoutOrder, + Padding = UDim.new(0, 4), + }), + Edits = if props.changeInfo and props.changeInfo.edits + then e("TextLabel", { + Text = props.changeInfo.edits .. if props.changeInfo.failed then "," else "", + BackgroundTransparency = 1, + Font = Enum.Font.Gotham, + TextSize = 14, + TextColor3 = theme.SubTextColor, + TextTransparency = props.transparency, + Size = UDim2.new(0, 0, 0, 16), + AutomaticSize = Enum.AutomaticSize.X, + LayoutOrder = 2, + }) + else nil, + Failed = if props.changeInfo and props.changeInfo.failed + then e("TextLabel", { + Text = props.changeInfo.failed, + BackgroundTransparency = 1, + Font = Enum.Font.Gotham, + TextSize = 14, + TextColor3 = theme.Diff.Warning, + TextTransparency = props.transparency, + Size = UDim2.new(0, 0, 0, 16), + AutomaticSize = Enum.AutomaticSize.X, + LayoutOrder = 6, + }) + else nil, }), LineGuides = e("Folder", nil, lineGuides), }) diff --git a/plugin/src/App/Components/PatchVisualizer/init.lua b/plugin/src/App/Components/PatchVisualizer/init.lua index 67a4d7b20..a87d499bb 100644 --- a/plugin/src/App/Components/PatchVisualizer/init.lua +++ b/plugin/src/App/Components/PatchVisualizer/init.lua @@ -8,8 +8,8 @@ local PatchTree = require(Plugin.PatchTree) local PatchSet = require(Plugin.PatchSet) local Theme = require(Plugin.App.Theme) -local BorderedContainer = require(Plugin.App.Components.BorderedContainer) local VirtualScroller = require(Plugin.App.Components.VirtualScroller) +local BorderedContainer = require(Plugin.App.Components.BorderedContainer) local e = Roact.createElement @@ -55,34 +55,60 @@ function PatchVisualizer:render() end -- Recusively draw tree - local scrollElements, elementHeights = {}, {} + local scrollElements, elementHeights, elementIndex = {}, {}, 0 if patchTree then + local elementTotal = patchTree:getCount() + local depthsComplete = {} local function drawNode(node, depth) - local elementHeight, setElementHeight = Roact.createBinding(30) - table.insert(elementHeights, elementHeight) - table.insert( - scrollElements, - e(DomLabel, { - updateEvent = self.updateEvent, - elementHeight = elementHeight, - setElementHeight = setElementHeight, - patchType = node.patchType, - className = node.className, - isWarning = node.isWarning, - instance = node.instance, - name = node.name, - hint = node.hint, - changeList = node.changeList, - depth = depth, - transparency = self.props.transparency, - showStringDiff = self.props.showStringDiff, - showTableDiff = self.props.showTableDiff, - }) - ) + elementIndex += 1 + + local parentNode = patchTree:getNode(node.parentId) + local isFinalChild = true + if parentNode then + for _id, sibling in parentNode.children do + if type(sibling) == "table" and sibling.name and sibling.name > node.name then + isFinalChild = false + break + end + end + end + + local elementHeight, setElementHeight = Roact.createBinding(24) + elementHeights[elementIndex] = elementHeight + scrollElements[elementIndex] = e(DomLabel, { + transparency = self.props.transparency, + showStringDiff = self.props.showStringDiff, + showTableDiff = self.props.showTableDiff, + updateEvent = self.updateEvent, + elementHeight = elementHeight, + setElementHeight = setElementHeight, + elementIndex = elementIndex, + isFinalElement = elementIndex == elementTotal, + depth = depth, + depthsComplete = table.clone(depthsComplete), + hasChildren = (node.children ~= nil and next(node.children) ~= nil), + isFinalChild = isFinalChild, + patchType = node.patchType, + className = node.className, + isWarning = node.isWarning, + instance = node.instance, + name = node.name, + changeInfo = node.changeInfo, + changeList = node.changeList, + }) + + if isFinalChild then + depthsComplete[depth] = true + end end patchTree:forEach(function(node, depth) + depthsComplete[depth] = false + for i = depth + 1, #depthsComplete do + depthsComplete[i] = nil + end + drawNode(node, depth) end) end @@ -92,6 +118,7 @@ function PatchVisualizer:render() transparency = self.props.transparency, size = self.props.size, position = self.props.position, + anchorPoint = self.props.anchorPoint, layoutOrder = self.props.layoutOrder, }, { CleanMerge = e("TextLabel", { @@ -106,7 +133,8 @@ function PatchVisualizer:render() }), VirtualScroller = e(VirtualScroller, { - size = UDim2.new(1, 0, 1, 0), + size = UDim2.new(1, 0, 1, -2), + position = UDim2.new(0, 0, 0, 2), transparency = self.props.transparency, count = #scrollElements, updateEvent = self.updateEvent.Event, diff --git a/plugin/src/App/Components/SlicedImage.lua b/plugin/src/App/Components/SlicedImage.lua index 40279cc89..1dff9caa8 100644 --- a/plugin/src/App/Components/SlicedImage.lua +++ b/plugin/src/App/Components/SlicedImage.lua @@ -20,6 +20,7 @@ local function SlicedImage(props) Size = props.size, Position = props.position, AnchorPoint = props.anchorPoint, + AutomaticSize = props.automaticSize, ZIndex = props.zIndex, LayoutOrder = props.layoutOrder, diff --git a/plugin/src/App/Components/Tag.lua b/plugin/src/App/Components/Tag.lua new file mode 100644 index 000000000..9fed3d33f --- /dev/null +++ b/plugin/src/App/Components/Tag.lua @@ -0,0 +1,56 @@ +local Rojo = script:FindFirstAncestor("Rojo") +local Plugin = Rojo.Plugin +local Packages = Rojo.Packages + +local Roact = require(Packages.Roact) + +local Assets = require(Plugin.Assets) + +local SlicedImage = require(Plugin.App.Components.SlicedImage) + +local e = Roact.createElement + +return function(props) + return e(SlicedImage, { + slice = Assets.Slices.RoundedBackground, + color = props.color, + transparency = props.transparency:map(function(transparency) + return 0.9 + (0.1 * transparency) + end), + layoutOrder = props.layoutOrder, + position = props.position, + anchorPoint = props.anchorPoint, + size = UDim2.new(0, 0, 0, 16), + automaticSize = Enum.AutomaticSize.X, + }, { + Padding = e("UIPadding", { + PaddingLeft = UDim.new(0, 4), + PaddingRight = UDim.new(0, 4), + PaddingTop = UDim.new(0, 2), + PaddingBottom = UDim.new(0, 2), + }), + Icon = if props.icon + then e("ImageLabel", { + Size = UDim2.new(0, 12, 0, 12), + Position = UDim2.new(0, 0, 0.5, 0), + AnchorPoint = Vector2.new(0, 0.5), + Image = props.icon, + BackgroundTransparency = 1, + ImageColor3 = props.color, + ImageTransparency = props.transparency, + }) + else nil, + Text = e("TextLabel", { + Text = props.text, + Font = Enum.Font.GothamMedium, + TextSize = 12, + TextColor3 = props.color, + TextXAlignment = Enum.TextXAlignment.Center, + TextTransparency = props.transparency, + Size = UDim2.new(0, 0, 1, 0), + Position = UDim2.new(0, if props.icon then 15 else 0, 0, 0), + AutomaticSize = Enum.AutomaticSize.X, + BackgroundTransparency = 1, + }), + }) +end diff --git a/plugin/src/App/Components/Tooltip.lua b/plugin/src/App/Components/Tooltip.lua index 278220958..2ab7e19a5 100644 --- a/plugin/src/App/Components/Tooltip.lua +++ b/plugin/src/App/Components/Tooltip.lua @@ -163,7 +163,6 @@ local Trigger = Roact.Component:extend("TooltipTrigger") function Trigger:init() self.id = HttpService:GenerateGUID(false) self.ref = Roact.createRef() - self.mousePos = Vector2.zero self.showingPopup = false self.destroy = function() @@ -195,18 +194,22 @@ end function Trigger:isHovering() local rbx = self.ref.current if rbx then - local pos = rbx.AbsolutePosition - local size = rbx.AbsoluteSize - local mousePos = self.mousePos - - return mousePos.X >= pos.X - and mousePos.X <= pos.X + size.X - and mousePos.Y >= pos.Y - and mousePos.Y <= pos.Y + size.Y + return rbx.GuiState == Enum.GuiState.Hover end return false end +function Trigger:getMousePos() + local rbx = self.ref.current + if rbx then + local widget = rbx:FindFirstAncestorOfClass("DockWidgetPluginGui") + if widget then + return widget:GetRelativeMousePosition() + end + end + return Vector2.zero +end + function Trigger:managePopup() if self:isHovering() then if self.showingPopup or self.showDelayThread then @@ -217,7 +220,7 @@ function Trigger:managePopup() self.showDelayThread = task.delay(DELAY, function() self.props.context.addTip(self.id, { Text = self.props.text, - Position = self.mousePos, + Position = self:getMousePos(), Trigger = self.ref, }) self.showDelayThread = nil @@ -234,13 +237,7 @@ function Trigger:managePopup() end function Trigger:render() - local function recalculate(rbx) - local widget = rbx:FindFirstAncestorOfClass("DockWidgetPluginGui") - if not widget then - return - end - self.mousePos = widget:GetRelativeMousePosition() - + local function recalculate() self:managePopup() end @@ -250,11 +247,9 @@ function Trigger:render() ZIndex = self.props.zIndex or 100, [Roact.Ref] = self.ref, + [Roact.Change.GuiState] = recalculate, [Roact.Change.AbsolutePosition] = recalculate, [Roact.Change.AbsoluteSize] = recalculate, - [Roact.Event.MouseMoved] = recalculate, - [Roact.Event.MouseLeave] = recalculate, - [Roact.Event.MouseEnter] = recalculate, }) end diff --git a/plugin/src/App/Components/VirtualScroller.lua b/plugin/src/App/Components/VirtualScroller.lua index 69bcf5f10..466da8a4f 100644 --- a/plugin/src/App/Components/VirtualScroller.lua +++ b/plugin/src/App/Components/VirtualScroller.lua @@ -131,8 +131,8 @@ function VirtualScroller:render() Position = props.position, AnchorPoint = props.anchorPoint, BackgroundTransparency = props.backgroundTransparency or 1, - BackgroundColor3 = props.backgroundColor3, - BorderColor3 = props.borderColor3, + BackgroundColor3 = props.backgroundColor3 or theme.BorderedContainer.BackgroundColor, + BorderColor3 = props.borderColor3 or theme.BorderedContainer.BorderColor, CanvasSize = self.totalCanvas:map(function(s) return UDim2.fromOffset(0, s) end), diff --git a/plugin/src/App/StatusPages/Confirming.lua b/plugin/src/App/StatusPages/Confirming.lua index bd0fd0a13..df8bf5b49 100644 --- a/plugin/src/App/StatusPages/Confirming.lua +++ b/plugin/src/App/StatusPages/Confirming.lua @@ -9,7 +9,6 @@ local PatchTree = require(Plugin.PatchTree) local Settings = require(Plugin.Settings) local Theme = require(Plugin.App.Theme) local TextButton = require(Plugin.App.Components.TextButton) -local Header = require(Plugin.App.Components.Header) local StudioPluginGui = require(Plugin.App.Components.Studio.StudioPluginGui) local Tooltip = require(Plugin.App.Components.Tooltip) local PatchVisualizer = require(Plugin.App.Components.PatchVisualizer) @@ -60,17 +59,11 @@ end function ConfirmingPage:render() return Theme.with(function(theme) local pageContent = Roact.createFragment({ - Header = e(Header, { - transparency = self.props.transparency, - layoutOrder = 1, - }), - Title = e("TextLabel", { Text = string.format( "Sync changes for project '%s':", self.props.confirmData.serverInfo.projectName or "UNKNOWN" ), - LayoutOrder = 2, Font = Enum.Font.Gotham, LineHeight = 1.2, TextSize = 14, @@ -82,7 +75,7 @@ function ConfirmingPage:render() }), PatchVisualizer = e(PatchVisualizer, { - size = UDim2.new(1, 0, 1, -150), + size = UDim2.new(1, 0, 1, -100), transparency = self.props.transparency, layoutOrder = 3, @@ -155,6 +148,11 @@ function ConfirmingPage:render() }), }), + Padding = e("UIPadding", { + PaddingLeft = UDim.new(0, 8), + PaddingRight = UDim.new(0, 8), + }), + Layout = e("UIListLayout", { HorizontalAlignment = Enum.HorizontalAlignment.Center, VerticalAlignment = Enum.VerticalAlignment.Center, @@ -163,11 +161,6 @@ function ConfirmingPage:render() Padding = UDim.new(0, 10), }), - Padding = e("UIPadding", { - PaddingLeft = UDim.new(0, 20), - PaddingRight = UDim.new(0, 20), - }), - StringDiff = e(StudioPluginGui, { id = "Rojo_ConfirmingStringDiff", title = "String diff", diff --git a/plugin/src/App/StatusPages/Connected.lua b/plugin/src/App/StatusPages/Connected.lua index d8055b3f3..b0bf33d9a 100644 --- a/plugin/src/App/StatusPages/Connected.lua +++ b/plugin/src/App/StatusPages/Connected.lua @@ -3,9 +3,8 @@ local Plugin = Rojo.Plugin local Packages = Rojo.Packages local Roact = require(Packages.Roact) -local Flipper = require(Packages.Flipper) -local bindingUtil = require(Plugin.App.bindingUtil) +local timeUtil = require(Plugin.timeUtil) local Theme = require(Plugin.App.Theme) local Assets = require(Plugin.Assets) local PatchSet = require(Plugin.PatchSet) @@ -22,79 +21,179 @@ local TableDiffVisualizer = require(Plugin.App.Components.TableDiffVisualizer) local e = Roact.createElement -local AGE_UNITS = { - { 31556909, "year" }, - { 2629743, "month" }, - { 604800, "week" }, - { 86400, "day" }, - { 3600, "hour" }, - { - 60, - "minute", - }, -} -function timeSinceText(elapsed: number): string - if elapsed < 3 then - return "just now" - end - - local ageText = string.format("%d seconds ago", elapsed) - - for _, UnitData in ipairs(AGE_UNITS) do - local UnitSeconds, UnitName = UnitData[1], UnitData[2] - if elapsed > UnitSeconds then - local c = math.floor(elapsed / UnitSeconds) - ageText = string.format("%d %s%s ago", c, UnitName, c > 1 and "s" or "") - break - end - end - - return ageText -end +local ChangesViewer = Roact.Component:extend("ChangesViewer") -local ChangesDrawer = Roact.Component:extend("ChangesDrawer") - -function ChangesDrawer:init() +function ChangesViewer:init() -- Hold onto the serve session during the lifecycle of this component -- so that it can still render during the fade out after disconnecting self.serveSession = self.props.serveSession end -function ChangesDrawer:render() - if self.props.rendered == false or self.serveSession == nil then +function ChangesViewer:render() + if self.props.rendered == false or self.serveSession == nil or self.props.patchData == nil then return nil end + local unapplied = PatchSet.countChanges(self.props.patchData.unapplied) + local applied = PatchSet.countChanges(self.props.patchData.patch) - unapplied + return Theme.with(function(theme) - return e(BorderedContainer, { - transparency = self.props.transparency, - size = self.props.height:map(function(y) - return UDim2.new(1, 0, y, -220 * y) - end), - position = UDim2.new(0, 0, 1, 0), - anchorPoint = Vector2.new(0, 1), - layoutOrder = self.props.layoutOrder, - }, { - Close = e(IconButton, { - icon = Assets.Images.Icons.Close, - iconSize = 24, - color = theme.ConnectionDetails.DisconnectColor, - transparency = self.props.transparency, + return Roact.createFragment({ + Navbar = e("Frame", { + Size = UDim2.new(1, 0, 0, 40), + BackgroundTransparency = 1, + }, { + Close = e(IconButton, { + icon = Assets.Images.Icons.Close, + iconSize = 24, + color = theme.Settings.Navbar.BackButtonColor, + transparency = self.props.transparency, - position = UDim2.new(1, 0, 0, 0), - anchorPoint = Vector2.new(1, 0), + position = UDim2.new(0, 0, 0.5, 0), + anchorPoint = Vector2.new(0, 0.5), - onClick = self.props.onClose, - }, { - Tip = e(Tooltip.Trigger, { - text = "Close the patch visualizer", + onClick = self.props.onBack, + }, { + Tip = e(Tooltip.Trigger, { + text = "Close", + }), + }), + + Title = e("TextLabel", { + Text = "Sync", + Font = Enum.Font.GothamMedium, + TextSize = 17, + TextXAlignment = Enum.TextXAlignment.Left, + TextColor3 = theme.TextColor, + TextTransparency = self.props.transparency, + Size = UDim2.new(1, -40, 0, 20), + Position = UDim2.new(0, 40, 0, 0), + BackgroundTransparency = 1, + }), + + Subtitle = e("TextLabel", { + Text = DateTime.fromUnixTimestamp(self.props.patchData.timestamp):FormatLocalTime("LTS", "en-us"), + TextXAlignment = Enum.TextXAlignment.Left, + Font = Enum.Font.Gotham, + TextSize = 15, + TextColor3 = theme.SubTextColor, + TextTruncate = Enum.TextTruncate.AtEnd, + TextTransparency = self.props.transparency, + Size = UDim2.new(1, -40, 0, 16), + Position = UDim2.new(0, 40, 0, 20), + BackgroundTransparency = 1, + }), + + Info = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(0, 10, 0, 24), + AutomaticSize = Enum.AutomaticSize.X, + Position = UDim2.new(1, -5, 0.5, 0), + AnchorPoint = Vector2.new(1, 0.5), + }, { + Tooltip = e(Tooltip.Trigger, { + text = `{applied} changes applied` + .. (if unapplied > 0 then `, {unapplied} changes failed` else ""), + }), + Content = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + }, { + Layout = e("UIListLayout", { + FillDirection = Enum.FillDirection.Horizontal, + HorizontalAlignment = Enum.HorizontalAlignment.Right, + VerticalAlignment = Enum.VerticalAlignment.Center, + SortOrder = Enum.SortOrder.LayoutOrder, + Padding = UDim.new(0, 4), + }), + + StatusIcon = e("ImageLabel", { + BackgroundTransparency = 1, + Image = if unapplied > 0 + then Assets.Images.Icons.SyncWarning + else Assets.Images.Icons.SyncSuccess, + ImageColor3 = if unapplied > 0 then theme.Diff.Warning else theme.TextColor, + Size = UDim2.new(0, 24, 0, 24), + LayoutOrder = 10, + }), + StatusSpacer = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(0, 6, 0, 4), + LayoutOrder = 9, + }), + AppliedIcon = e("ImageLabel", { + BackgroundTransparency = 1, + Image = Assets.Images.Icons.Checkmark, + ImageColor3 = theme.TextColor, + Size = UDim2.new(0, 16, 0, 16), + LayoutOrder = 1, + }), + AppliedText = e("TextLabel", { + Text = applied, + Font = Enum.Font.Gotham, + TextSize = 15, + TextColor3 = theme.TextColor, + TextTransparency = self.props.transparency, + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + BackgroundTransparency = 1, + LayoutOrder = 2, + }), + Warnings = if unapplied > 0 + then Roact.createFragment({ + WarningsSpacer = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(0, 4, 0, 4), + LayoutOrder = 3, + }), + UnappliedIcon = e("ImageLabel", { + BackgroundTransparency = 1, + Image = Assets.Images.Icons.Exclamation, + ImageColor3 = theme.Diff.Warning, + Size = UDim2.new(0, 4, 0, 16), + LayoutOrder = 4, + }), + UnappliedText = e("TextLabel", { + Text = unapplied, + Font = Enum.Font.Gotham, + TextSize = 15, + TextColor3 = theme.Diff.Warning, + TextTransparency = self.props.transparency, + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + BackgroundTransparency = 1, + LayoutOrder = 5, + }), + }) + else nil, + }), + }), + + Divider = e("Frame", { + BackgroundColor3 = theme.Settings.DividerColor, + BackgroundTransparency = self.props.transparency, + Size = UDim2.new(1, 0, 0, 1), + Position = UDim2.new(0, 0, 1, 0), + BorderSizePixel = 0, + }, { + Gradient = e("UIGradient", { + Transparency = NumberSequence.new({ + NumberSequenceKeypoint.new(0, 1), + NumberSequenceKeypoint.new(0.1, 0), + NumberSequenceKeypoint.new(0.9, 0), + NumberSequenceKeypoint.new(1, 1), + }), + }), }), }), - PatchVisualizer = e(PatchVisualizer, { - size = UDim2.new(1, 0, 1, 0), + Patch = e(PatchVisualizer, { + size = UDim2.new(1, -10, 1, -65), + position = UDim2.new(0, 5, 1, -5), + anchorPoint = Vector2.new(0, 1), transparency = self.props.transparency, - layoutOrder = 3, + layoutOrder = self.props.layoutOrder, patchTree = self.props.patchTree, @@ -167,20 +266,7 @@ function ConnectedPage:getChangeInfoText() if patchData == nil then return "" end - - local elapsed = os.time() - patchData.timestamp - local unapplied = PatchSet.countChanges(patchData.unapplied) - - return "Synced " - .. timeSinceText(elapsed) - .. (if unapplied > 0 - then string.format( - ', but %d change%s failed to apply', - unapplied, - unapplied == 1 and "" or "s" - ) - else "") - .. "" + return timeUtil.elapsedToText(DateTime.now().UnixTimestamp - patchData.timestamp) end function ConnectedPage:startChangeInfoTextUpdater() @@ -190,17 +276,13 @@ function ConnectedPage:startChangeInfoTextUpdater() -- Start a new updater self.changeInfoTextUpdater = task.defer(function() while true do - if self.state.hoveringChangeInfo then - self.setChangeInfoText("" .. self:getChangeInfoText() .. "") - else - self.setChangeInfoText(self:getChangeInfoText()) - end + self.setChangeInfoText(self:getChangeInfoText()) - local elapsed = os.time() - self.props.patchData.timestamp + local elapsed = DateTime.now().UnixTimestamp - self.props.patchData.timestamp local updateInterval = 1 -- Update timestamp text as frequently as currently needed - for _, UnitData in ipairs(AGE_UNITS) do + for _, UnitData in ipairs(timeUtil.AGE_UNITS) do local UnitSeconds = UnitData[1] if elapsed > UnitSeconds then updateInterval = UnitSeconds @@ -221,23 +303,6 @@ function ConnectedPage:stopChangeInfoTextUpdater() end function ConnectedPage:init() - self.changeDrawerMotor = Flipper.SingleMotor.new(0) - self.changeDrawerHeight = bindingUtil.fromMotor(self.changeDrawerMotor) - - self.changeDrawerMotor:onStep(function(value) - local renderChanges = value > 0.05 - - self:setState(function(state) - if state.renderChanges == renderChanges then - return nil - end - - return { - renderChanges = renderChanges, - } - end) - end) - self:setState({ renderChanges = false, hoveringChangeInfo = false, @@ -266,6 +331,10 @@ function ConnectedPage:didUpdate(previousProps) end function ConnectedPage:render() + local syncWarning = self.props.patchData + and self.props.patchData.unapplied + and PatchSet.countChanges(self.props.patchData.unapplied) > 0 + return Theme.with(function(theme) return Roact.createFragment({ Padding = e("UIPadding", { @@ -280,9 +349,88 @@ function ConnectedPage:render() Padding = UDim.new(0, 10), }), - Header = e(Header, { - transparency = self.props.transparency, - layoutOrder = 1, + Heading = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(1, 0, 0, 32), + }, { + Header = e(Header, { + transparency = self.props.transparency, + }), + + ChangeInfo = e("TextButton", { + Text = "", + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + BackgroundColor3 = theme.BorderedContainer.BorderedColor, + BackgroundTransparency = if self.state.hoveringChangeInfo then 0.7 else 1, + BorderSizePixel = 0, + Position = UDim2.new(1, -5, 0.5, 0), + AnchorPoint = Vector2.new(1, 0.5), + [Roact.Event.MouseEnter] = function() + self:setState({ + hoveringChangeInfo = true, + }) + end, + [Roact.Event.MouseLeave] = function() + self:setState({ + hoveringChangeInfo = false, + }) + end, + [Roact.Event.Activated] = function() + self:setState(function(prevState) + prevState = prevState or {} + return { + renderChanges = not prevState.renderChanges, + } + end) + end, + }, { + Corner = e("UICorner", { + CornerRadius = UDim.new(0, 5), + }), + Tooltip = e(Tooltip.Trigger, { + text = if self.state.renderChanges then "Hide changes" else "View changes", + }), + Content = e("Frame", { + BackgroundTransparency = 1, + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + }, { + Layout = e("UIListLayout", { + FillDirection = Enum.FillDirection.Horizontal, + HorizontalAlignment = Enum.HorizontalAlignment.Center, + VerticalAlignment = Enum.VerticalAlignment.Center, + SortOrder = Enum.SortOrder.LayoutOrder, + Padding = UDim.new(0, 5), + }), + Padding = e("UIPadding", { + PaddingLeft = UDim.new(0, 5), + PaddingRight = UDim.new(0, 5), + }), + Text = e("TextLabel", { + BackgroundTransparency = 1, + Text = self.changeInfoText, + Font = Enum.Font.Gotham, + TextSize = 15, + TextColor3 = if syncWarning then theme.Diff.Warning else theme.Header.VersionColor, + TextTransparency = self.props.transparency, + TextXAlignment = Enum.TextXAlignment.Right, + Size = UDim2.new(0, 0, 1, 0), + AutomaticSize = Enum.AutomaticSize.X, + LayoutOrder = 1, + }), + Icon = e("ImageLabel", { + BackgroundTransparency = 1, + Image = if syncWarning + then Assets.Images.Icons.SyncWarning + else Assets.Images.Icons.SyncSuccess, + ImageColor3 = if syncWarning then theme.Diff.Warning else theme.Header.VersionColor, + ImageTransparency = self.props.transparency, + Size = UDim2.new(0, 24, 0, 24), + LayoutOrder = 2, + }), + }), + }), }), ConnectionDetails = e(ConnectionDetails, { @@ -332,86 +480,61 @@ function ConnectedPage:render() }), }), - ChangeInfo = e("TextButton", { - Text = self.changeInfoText, - Font = Enum.Font.Gotham, - TextSize = 14, - TextWrapped = true, - RichText = true, - TextColor3 = theme.Header.VersionColor, - TextXAlignment = Enum.TextXAlignment.Left, - TextYAlignment = Enum.TextYAlignment.Top, - TextTransparency = self.props.transparency, - - Size = UDim2.new(1, 0, 0, 28), + ChangesViewer = e(StudioPluginGui, { + id = "Rojo_ChangesViewer", + title = "View changes", + active = self.state.renderChanges, + isEphemeral = true, - LayoutOrder = 4, - BackgroundTransparency = 1, + initDockState = Enum.InitialDockState.Float, + overridePreviousState = true, + floatingSize = Vector2.new(400, 500), + minimumSize = Vector2.new(300, 300), - [Roact.Event.MouseEnter] = function() - self:setState({ - hoveringChangeInfo = true, - }) - self.setChangeInfoText("" .. self:getChangeInfoText() .. "") - end, + zIndexBehavior = Enum.ZIndexBehavior.Sibling, - [Roact.Event.MouseLeave] = function() + onClose = function() self:setState({ - hoveringChangeInfo = false, + renderChanges = false, }) - self.setChangeInfoText(self:getChangeInfoText()) - end, - - [Roact.Event.Activated] = function() - if self.state.renderChanges then - self.changeDrawerMotor:setGoal(Flipper.Spring.new(0, { - frequency = 4, - dampingRatio = 1, - })) - else - self.changeDrawerMotor:setGoal(Flipper.Spring.new(1, { - frequency = 3, - dampingRatio = 1, - })) - end end, }, { - Tooltip = e(Tooltip.Trigger, { - text = if self.state.renderChanges then "Hide the changes" else "View the changes", + TooltipsProvider = e(Tooltip.Provider, nil, { + Tooltips = e(Tooltip.Container, nil), + Content = e("Frame", { + Size = UDim2.fromScale(1, 1), + BackgroundTransparency = 1, + }, { + Changes = e(ChangesViewer, { + transparency = self.props.transparency, + rendered = self.state.renderChanges, + patchData = self.props.patchData, + patchTree = self.props.patchTree, + serveSession = self.props.serveSession, + showStringDiff = function(oldString: string, newString: string) + self:setState({ + showingStringDiff = true, + oldString = oldString, + newString = newString, + }) + end, + showTableDiff = function(oldTable: { [any]: any? }, newTable: { [any]: any? }) + self:setState({ + showingTableDiff = true, + oldTable = oldTable, + newTable = newTable, + }) + end, + onBack = function() + self:setState({ + renderChanges = false, + }) + end, + }), + }), }), }), - ChangesDrawer = e(ChangesDrawer, { - rendered = self.state.renderChanges, - transparency = self.props.transparency, - patchTree = self.props.patchTree, - serveSession = self.props.serveSession, - height = self.changeDrawerHeight, - layoutOrder = 5, - - showStringDiff = function(oldString: string, newString: string) - self:setState({ - showingStringDiff = true, - oldString = oldString, - newString = newString, - }) - end, - showTableDiff = function(oldTable: { [any]: any? }, newTable: { [any]: any? }) - self:setState({ - showingTableDiff = true, - oldTable = oldTable, - newTable = newTable, - }) - end, - - onClose = function() - self.changeDrawerMotor:setGoal(Flipper.Spring.new(0, { - frequency = 4, - dampingRatio = 1, - })) - end, - }), - StringDiff = e(StudioPluginGui, { id = "Rojo_ConnectedStringDiff", title = "String diff", diff --git a/plugin/src/App/StatusPages/Settings/Setting.lua b/plugin/src/App/StatusPages/Settings/Setting.lua index b75686f42..75f391db5 100644 --- a/plugin/src/App/StatusPages/Settings/Setting.lua +++ b/plugin/src/App/StatusPages/Settings/Setting.lua @@ -13,10 +13,23 @@ local Theme = require(Plugin.App.Theme) local Checkbox = require(Plugin.App.Components.Checkbox) local Dropdown = require(Plugin.App.Components.Dropdown) local IconButton = require(Plugin.App.Components.IconButton) +local Tag = require(Plugin.App.Components.Tag) local e = Roact.createElement local DIVIDER_FADE_SIZE = 0.1 +local TAG_TYPES = { + unstable = { + text = "UNSTABLE", + icon = Assets.Images.Icons.Warning, + color = { "Settings", "Setting", "UnstableColor" }, + }, + debug = { + text = "DEBUG", + icon = Assets.Images.Icons.Debug, + color = { "Settings", "Setting", "DebugColor" }, + }, +} local function getTextBounds(text, textSize, font, lineHeight, bounds) local textBounds = TextService:GetTextSize(text, textSize, font, bounds) @@ -27,6 +40,17 @@ local function getTextBounds(text, textSize, font, lineHeight, bounds) return Vector2.new(textBounds.X, lineHeightAbsolute * lineCount - (lineHeightAbsolute - textSize)) end +local function getThemeColorFromPath(theme, path) + local color = theme + for _, key in path do + if color[key] == nil then + return theme.BrandColor + end + color = color[key] + end + return color +end + local Setting = Roact.Component:extend("Setting") function Setting:init() @@ -54,11 +78,11 @@ end function Setting:render() return Theme.with(function(theme) - theme = theme.Settings + local settingsTheme = theme.Settings return e("Frame", { Size = self.contentSize:map(function(value) - return UDim2.new(1, 0, 0, 20 + value.Y + 20) + return UDim2.new(1, 0, 0, value.Y + 20) end), LayoutOrder = self.props.layoutOrder, ZIndex = -self.props.layoutOrder, @@ -109,7 +133,7 @@ function Setting:render() then e(IconButton, { icon = Assets.Images.Icons.Reset, iconSize = 24, - color = theme.BackButtonColor, + color = settingsTheme.BackButtonColor, transparency = self.props.transparency, visible = self.props.showReset, layoutOrder = -1, @@ -123,37 +147,49 @@ function Setting:render() Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, }, { - Name = e("TextLabel", { - Text = ( - if self.props.experimental - then 'âš  ' - elseif - self.props.developerDebug - then 'âš‘ ' -- Guru is the only font with the flag emoji - else "" - ) .. self.props.name, - Font = Enum.Font.GothamBold, - TextSize = 17, - TextColor3 = theme.Setting.NameColor, - TextXAlignment = Enum.TextXAlignment.Left, - TextTransparency = self.props.transparency, - RichText = true, - - Size = UDim2.new(1, 0, 0, 17), - - LayoutOrder = 1, + Heading = e("Frame", { + Size = UDim2.new(1, 0, 0, 16), BackgroundTransparency = 1, + }, { + Layout = e("UIListLayout", { + VerticalAlignment = Enum.VerticalAlignment.Center, + FillDirection = Enum.FillDirection.Horizontal, + SortOrder = Enum.SortOrder.LayoutOrder, + Padding = UDim.new(0, 5), + }), + Tag = if self.props.tag and TAG_TYPES[self.props.tag] + then e(Tag, { + layoutOrder = 1, + transparency = self.props.transparency, + text = TAG_TYPES[self.props.tag].text, + icon = TAG_TYPES[self.props.tag].icon, + color = getThemeColorFromPath(theme, TAG_TYPES[self.props.tag].color), + }) + else nil, + Name = e("TextLabel", { + Text = self.props.name, + Font = Enum.Font.GothamBold, + TextSize = 16, + TextColor3 = if self.props.tag and TAG_TYPES[self.props.tag] + then getThemeColorFromPath(theme, TAG_TYPES[self.props.tag].color) + else settingsTheme.Setting.NameColor, + TextXAlignment = Enum.TextXAlignment.Left, + TextTransparency = self.props.transparency, + RichText = true, + + Size = UDim2.new(1, 0, 0, 16), + + LayoutOrder = 2, + BackgroundTransparency = 1, + }), }), Description = e("TextLabel", { - Text = (if self.props.experimental - then '[Experimental] ' - elseif self.props.developerDebug then '[Dev Debug] ' - else "") .. self.props.description, + Text = self.props.description, Font = Enum.Font.Gotham, LineHeight = 1.2, TextSize = 14, - TextColor3 = theme.Setting.DescriptionColor, + TextColor3 = settingsTheme.Setting.DescriptionColor, TextXAlignment = Enum.TextXAlignment.Left, TextTransparency = self.props.transparency, TextWrapped = true, @@ -163,11 +199,9 @@ function Setting:render() containerSize = self.containerSize, inputSize = self.inputSize, }):map(function(values) - local desc = (if self.props.experimental then "[Experimental] " else "") - .. self.props.description local offset = values.inputSize.X + 5 local textBounds = getTextBounds( - desc, + self.props.description, 14, Enum.Font.Gotham, 1.2, @@ -176,7 +210,7 @@ function Setting:render() return UDim2.new(1, -offset, 0, textBounds.Y) end), - LayoutOrder = 2, + LayoutOrder = 3, BackgroundTransparency = 1, }), @@ -184,21 +218,16 @@ function Setting:render() VerticalAlignment = Enum.VerticalAlignment.Center, FillDirection = Enum.FillDirection.Vertical, SortOrder = Enum.SortOrder.LayoutOrder, - Padding = UDim.new(0, 6), + Padding = UDim.new(0, 5), [Roact.Change.AbsoluteContentSize] = function(object) self.setContentSize(object.AbsoluteContentSize) end, }), - - Padding = e("UIPadding", { - PaddingTop = UDim.new(0, 20), - PaddingBottom = UDim.new(0, 20), - }), }), Divider = e("Frame", { - BackgroundColor3 = theme.DividerColor, + BackgroundColor3 = settingsTheme.DividerColor, BackgroundTransparency = self.props.transparency, Size = UDim2.new(1, 0, 0, 1), BorderSizePixel = 0, diff --git a/plugin/src/App/StatusPages/Settings/init.lua b/plugin/src/App/StatusPages/Settings/init.lua index 664742ac0..31c76666c 100644 --- a/plugin/src/App/StatusPages/Settings/init.lua +++ b/plugin/src/App/StatusPages/Settings/init.lua @@ -27,7 +27,7 @@ local function invertTbl(tbl) end local invertedLevels = invertTbl(Log.Level) -local confirmationBehaviors = { "Initial", "Always", "Large Changes", "Unlisted PlaceId" } +local confirmationBehaviors = { "Initial", "Always", "Large Changes", "Unlisted PlaceId", "Never" } local function Navbar(props) return Theme.with(function(theme) @@ -198,11 +198,30 @@ function SettingsPage:render() }), }), + CheckForUpdates = e(Setting, { + id = "checkForUpdates", + name = "Check For Updates", + description = "Notify about newer compatible Rojo releases", + transparency = self.props.transparency, + layoutOrder = layoutIncrement(), + }), + + CheckForPreleases = e(Setting, { + id = "checkForPrereleases", + name = "Include Prerelease Updates", + description = "Include prereleases when checking for updates", + transparency = self.props.transparency, + layoutOrder = layoutIncrement(), + visible = if string.find(debug.traceback(), "\n[^\n]-user_.-$") == nil + then false -- Must be a local install to allow prerelease checks + else Settings:getBinding("checkForUpdates"), + }), + AutoConnectPlaytestServer = e(Setting, { id = "autoConnectPlaytestServer", name = "Auto Connect Playtest Server", description = "Automatically connect game server to Rojo when playtesting while connected in Edit", - experimental = true, + tag = "unstable", transparency = self.props.transparency, layoutOrder = layoutIncrement(), }), @@ -211,8 +230,7 @@ function SettingsPage:render() id = "openScriptsExternally", name = "Open Scripts Externally", description = "Attempt to open scripts in an external editor", - locked = self.props.syncActive, - experimental = true, + tag = "unstable", transparency = self.props.transparency, layoutOrder = layoutIncrement(), }), @@ -222,7 +240,7 @@ function SettingsPage:render() name = "Two-Way Sync", description = "Editing files in Studio will sync them into the filesystem", locked = self.props.syncActive, - experimental = true, + tag = "unstable", transparency = self.props.transparency, layoutOrder = layoutIncrement(), }), @@ -231,7 +249,7 @@ function SettingsPage:render() id = "logLevel", name = "Log Level", description = "Plugin output verbosity level", - developerDebug = true, + tag = "debug", transparency = self.props.transparency, layoutOrder = layoutIncrement(), @@ -248,7 +266,7 @@ function SettingsPage:render() id = "typecheckingEnabled", name = "Typechecking", description = "Toggle typechecking on the API surface", - developerDebug = true, + tag = "debug", transparency = self.props.transparency, layoutOrder = layoutIncrement(), }), @@ -257,7 +275,7 @@ function SettingsPage:render() id = "timingLogsEnabled", name = "Timing Logs", description = "Toggle logging timing of internal actions for benchmarking Rojo performance", - developerDebug = true, + tag = "debug", transparency = self.props.transparency, layoutOrder = layoutIncrement(), }), diff --git a/plugin/src/App/Theme.lua b/plugin/src/App/Theme.lua index f1e9c3971..42d619425 100644 --- a/plugin/src/App/Theme.lua +++ b/plugin/src/App/Theme.lua @@ -32,9 +32,13 @@ local StudioProvider = Roact.Component:extend("StudioProvider") function StudioProvider:updateTheme() local studioTheme = getStudio().Theme + local isDark = studioTheme.Name == "Dark" + local theme = strict(studioTheme.Name .. "Theme", { + BrandColor = BRAND_COLOR, BackgroundColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.MainBackground), TextColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.MainText), + SubTextColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.SubText), Button = { Solid = { -- Solid uses brand theming, not Studio theming. @@ -139,9 +143,10 @@ function StudioProvider:updateTheme() BackgroundColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.InputFieldBackground), }, Diff = { - Add = studioTheme:GetColor(Enum.StudioStyleGuideColor.DiffTextAdditionBackground), - Remove = studioTheme:GetColor(Enum.StudioStyleGuideColor.DiffTextDeletionBackground), - Edit = studioTheme:GetColor(Enum.StudioStyleGuideColor.DiffLineNumSeparatorBackground), + -- Studio doesn't have good colors since their diffs use backgrounds, not text + Add = if isDark then Color3.fromRGB(143, 227, 154) else Color3.fromRGB(41, 164, 45), + Remove = if isDark then Color3.fromRGB(242, 125, 125) else Color3.fromRGB(150, 29, 29), + Edit = if isDark then Color3.fromRGB(120, 154, 248) else Color3.fromRGB(0, 70, 160), Row = studioTheme:GetColor(Enum.StudioStyleGuideColor.BrightText), Warning = studioTheme:GetColor(Enum.StudioStyleGuideColor.WarningText), }, @@ -162,6 +167,8 @@ function StudioProvider:updateTheme() Setting = { NameColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.BrightText), DescriptionColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.MainText), + UnstableColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.WarningText), + DebugColor = studioTheme:GetColor(Enum.StudioStyleGuideColor.InfoText), }, }, Header = { diff --git a/plugin/src/App/init.lua b/plugin/src/App/init.lua index b1637a883..877b2ff82 100644 --- a/plugin/src/App/init.lua +++ b/plugin/src/App/init.lua @@ -24,6 +24,7 @@ local PatchTree = require(Plugin.PatchTree) local preloadAssets = require(Plugin.preloadAssets) local soundPlayer = require(Plugin.soundPlayer) local ignorePlaceIds = require(Plugin.ignorePlaceIds) +local timeUtil = require(Plugin.timeUtil) local Theme = require(script.Theme) local Page = require(script.Page) @@ -55,9 +56,9 @@ local App = Roact.Component:extend("App") function App:init() preloadAssets() - local priorHost, priorPort = self:getPriorEndpoint() - self.host, self.setHost = Roact.createBinding(priorHost or "") - self.port, self.setPort = Roact.createBinding(priorPort or "") + local priorSyncInfo = self:getPriorSyncInfo() + self.host, self.setHost = Roact.createBinding(priorSyncInfo.host or "") + self.port, self.setPort = Roact.createBinding(priorSyncInfo.port or "") self.confirmationBindable = Instance.new("BindableEvent") self.confirmationEvent = self.confirmationBindable.Event @@ -122,6 +123,13 @@ function App:init() end) end) + self.disconnectUpdatesCheckChanged = Settings:onChanged("checkForUpdates", function() + self:checkForUpdates() + end) + self.disconnectPrereleasesCheckChanged = Settings:onChanged("checkForPrereleases", function() + self:checkForUpdates() + end) + self:setState({ appStatus = AppStatus.NotConnected, guiEnabled = false, @@ -187,32 +195,45 @@ function App:init() ExposedAPIModule.Parent = game end - if - RunService:IsEdit() - and self.serveSession == nil - and Settings:get("syncReminder") - and self:getLastSyncTimestamp() - and (self:isSyncLockAvailable()) - then - self:addNotification("You've previously synced this place. Would you like to reconnect?", 300, { - Connect = { - text = "Connect", - style = "Solid", - layoutOrder = 1, - onClick = function(notification) - notification:dismiss() - self:startSession() - end, - }, - Dismiss = { - text = "Dismiss", - style = "Bordered", - layoutOrder = 2, - onClick = function(notification) - notification:dismiss() - end, - }, - }) + if RunService:IsEdit() then + self:checkForUpdates() + + if + Settings:get("syncReminder") + and self.serveSession == nil + and self:getPriorSyncInfo().timestamp ~= nil + and (self:isSyncLockAvailable()) + then + local syncInfo = self:getPriorSyncInfo() + local timeSinceSync = timeUtil.elapsedToText(os.time() - syncInfo.timestamp) + local syncDetail = if syncInfo.projectName + then `project '{syncInfo.projectName}'` + else `{syncInfo.host or Config.defaultHost}:{syncInfo.port or Config.defaultPort}` + + self:addNotification( + `You synced {syncDetail} to this place {timeSinceSync}. Would you like to reconnect?`, + 300, + { + Connect = { + text = "Connect", + style = "Solid", + layoutOrder = 1, + onClick = function(notification) + notification:dismiss() + self:startSession() + end, + }, + Dismiss = { + text = "Dismiss", + style = "Bordered", + layoutOrder = 2, + onClick = function(notification) + notification:dismiss() + end, + }, + } + ) + end end if self:isAutoConnectPlaytestServerAvailable() then @@ -235,6 +256,10 @@ end function App:willUnmount() self.waypointConnection:Disconnect() self.confirmationBindable:Destroy() + + self.disconnectUpdatesCheckChanged() + self.disconnectPrereleasesCheckChanged() + self.autoConnectPlaytestServerListener() self:clearRunningConnectionInfo() end @@ -315,54 +340,66 @@ function App:closeNotification(id: number) }) end -function App:getPriorEndpoint() - local priorEndpoints = Settings:get("priorEndpoints") - if not priorEndpoints then +function App:checkForUpdates() + if not Settings:get("checkForUpdates") then return end - local id = tostring(game.PlaceId) - if ignorePlaceIds[id] then - return - end - - local place = priorEndpoints[id] - if not place then + local isLocalInstall = string.find(debug.traceback(), "\n[^\n]-user_.-$") ~= nil + local latestCompatibleVersion = Version.retrieveLatestCompatible({ + version = Config.version, + includePrereleases = isLocalInstall and Settings:get("checkForPrereleases"), + }) + if not latestCompatibleVersion then return end - return place.host, place.port + self:addNotification( + string.format( + "A newer compatible version of Rojo, %s, was published %s! Go to the Rojo releases page to learn more.", + Version.display(latestCompatibleVersion.version), + timeUtil.elapsedToText(DateTime.now().UnixTimestamp - latestCompatibleVersion.publishedUnixTimestamp) + ), + 500, + { + Dismiss = { + text = "Dismiss", + style = "Bordered", + layoutOrder = 2, + onClick = function(notification) + notification:dismiss() + end, + }, + } + ) end -function App:getLastSyncTimestamp() - local priorEndpoints = Settings:get("priorEndpoints") - if not priorEndpoints then - return +function App:getPriorSyncInfo(): { host: string?, port: string?, projectName: string?, timestamp: number? } + local priorSyncInfos = Settings:get("priorEndpoints") + if not priorSyncInfos then + return {} end local id = tostring(game.PlaceId) if ignorePlaceIds[id] then - return + return {} end - local place = priorEndpoints[id] - if not place then - return - end - - return place.timestamp + return priorSyncInfos[id] or {} end -function App:setPriorEndpoint(host: string, port: string) - local priorEndpoints = Settings:get("priorEndpoints") - if not priorEndpoints then - priorEndpoints = {} +function App:setPriorSyncInfo(host: string, port: string, projectName: string) + local priorSyncInfos = Settings:get("priorEndpoints") + if not priorSyncInfos then + priorSyncInfos = {} end + local now = os.time() + -- Clear any stale saves to avoid disc bloat - for placeId, endpoint in priorEndpoints do - if os.time() - endpoint.timestamp > 12_960_000 then - priorEndpoints[placeId] = nil + for placeId, syncInfo in priorSyncInfos do + if now - (syncInfo.timestamp or now) > 12_960_000 then + priorSyncInfos[placeId] = nil Log.trace("Cleared stale saved endpoint for {}", placeId) end end @@ -372,14 +409,15 @@ function App:setPriorEndpoint(host: string, port: string) return end - priorEndpoints[id] = { + priorSyncInfos[id] = { host = if host ~= Config.defaultHost then host else nil, port = if port ~= Config.defaultPort then port else nil, - timestamp = os.time(), + projectName = projectName, + timestamp = now, } Log.trace("Saved last used endpoint for {}", game.PlaceId) - Settings:set("priorEndpoints", priorEndpoints) + Settings:set("priorEndpoints", priorSyncInfos) end function App:getHostAndPort(): (string, string) @@ -570,11 +608,6 @@ function App:startSession(host: string?, port: string?) host, port = self:getHostAndPort() end - local sessionOptions = { - openScriptsExternally = Settings:get("openScriptsExternally"), - twoWaySync = Settings:get("twoWaySync"), - } - local baseUrl = if string.find(host, "^https?://") then string.format("%s:%s", host, port) else string.format("http://%s:%s", host, port) @@ -582,8 +615,7 @@ function App:startSession(host: string?, port: string?) local serveSession = ServeSession.new({ apiContext = apiContext, - openScriptsExternally = sessionOptions.openScriptsExternally, - twoWaySync = sessionOptions.twoWaySync, + twoWaySync = Settings:get("twoWaySync"), }) self.cleanupPrecommit = serveSession.__reconciler:hookPrecommit(function(patch, instanceMap) @@ -602,7 +634,7 @@ function App:startSession(host: string?, port: string?) end) serveSession:hookPostcommit(function(patch, _instanceMap, unapplied) - local now = os.time() + local now = DateTime.now().UnixTimestamp local old = self.state.patchData if PatchSet.isEmpty(patch) then @@ -635,8 +667,6 @@ function App:startSession(host: string?, port: string?) serveSession:onStatusChanged(function(status, details) if status == ServeSession.Status.Connecting then - self:setPriorEndpoint(host, port) - self:setState({ appStatus = AppStatus.Connecting, toolbarIcon = Assets.Images.PluginButton, @@ -649,6 +679,7 @@ function App:startSession(host: string?, port: string?) self.headlessAPI:_updateProperty("ProjectName", details) self.knownProjects[details] = true + self:setPriorSyncInfo(host, port, details) self:setRunningConnectionInfo(baseUrl) self:setState({ @@ -737,6 +768,9 @@ function App:startSession(host: string?, port: string?) return "Accept" end end + elseif confirmationBehavior == "Never" then + Log.trace("Accepting patch without confirmation because behavior is set to Never") + return "Accept" end -- The datamodel name gets overwritten by Studio, making confirmation of it intrusive diff --git a/plugin/src/Assets.lua b/plugin/src/Assets.lua index a96a8d70c..88fb12b10 100644 --- a/plugin/src/Assets.lua +++ b/plugin/src/Assets.lua @@ -28,6 +28,12 @@ local Assets = { Expand = "rbxassetid://12045401097", Settings = "rbxassetid://12046309515", Transact = "rbxassetid://16350762910", + Warning = "rbxassetid://16571019891", + Debug = "rbxassetid://16588411361", + Checkmark = "rbxassetid://16571012729", + Exclamation = "rbxassetid://16571172190", + SyncSuccess = "rbxassetid://16565035221", + SyncWarning = "rbxassetid://16565325171", }, Diff = { Add = "rbxassetid://10434145835", diff --git a/plugin/src/Config.lua b/plugin/src/Config.lua index 0238b2cb6..5567efca2 100644 --- a/plugin/src/Config.lua +++ b/plugin/src/Config.lua @@ -3,7 +3,8 @@ local strict = require(script.Parent.strict) local isDevBuild = script.Parent.Parent:FindFirstChild("ROJO_DEV_BUILD") ~= nil local Version = script.Parent.Parent.Version -local major, minor, patch, metadata = Version.Value:match("^(%d+)%.(%d+)%.(%d+)(.*)$") +local trimmedVersionValue = Version.Value:gsub("^%s+", ""):gsub("%s+$", "") +local major, minor, patch, metadata = trimmedVersionValue:match("^(%d+)%.(%d+)%.(%d+)(.*)$") local realVersion = { major, minor, patch, metadata } for i = 1, 3 do diff --git a/plugin/src/InstanceMap.lua b/plugin/src/InstanceMap.lua index b035d423c..76754fef5 100644 --- a/plugin/src/InstanceMap.lua +++ b/plugin/src/InstanceMap.lua @@ -112,9 +112,12 @@ end function InstanceMap:destroyInstance(instance) local id = self.fromInstances[instance] - local descendants = instance:GetDescendants() - instance:Destroy() + + -- Because the user might want to Undo this change, we cannot use Destroy + -- since that locks that parent and prevents ChangeHistoryService from + -- ever bringing it back. Instead, we parent to nil. + instance.Parent = nil -- After the instance is successfully destroyed, -- we can remove all the id mappings diff --git a/plugin/src/PatchSet.lua b/plugin/src/PatchSet.lua index abbac0cbb..064def36c 100644 --- a/plugin/src/PatchSet.lua +++ b/plugin/src/PatchSet.lua @@ -211,9 +211,11 @@ end function PatchSet.countChanges(patch) local count = 0 - for _ in patch.added do - -- Adding an instance is 1 change - count += 1 + for _, add in patch.added do + -- Adding an instance is 1 change per property + for _ in add.Properties do + count += 1 + end end for _ in patch.removed do -- Removing an instance is 1 change diff --git a/plugin/src/PatchTree.lua b/plugin/src/PatchTree.lua index d0d99e37d..c1c5f91ca 100644 --- a/plugin/src/PatchTree.lua +++ b/plugin/src/PatchTree.lua @@ -79,6 +79,15 @@ function Tree.new() return setmetatable(tree, Tree) end +-- Iterates over all nodes and counts them up +function Tree:getCount() + local count = 0 + self:forEach(function() + count += 1 + end) + return count +end + -- Iterates over all sub-nodes, depth first -- node is where to start from, defaults to root -- depth is used for recursion but can be used to set the starting depth @@ -163,8 +172,7 @@ function Tree:buildAncestryNodes(previousId: string?, ancestryIds: { string }, p -- Build nodes for ancestry by going up the tree previousId = previousId or "ROOT" - for i = #ancestryIds, 1, -1 do - local ancestorId = ancestryIds[i] + for _, ancestorId in ancestryIds do local value = instanceMap.fromIds[ancestorId] or patch.added[ancestorId] if not value then Log.warn("Failed to find ancestor object for " .. ancestorId) @@ -200,7 +208,7 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) end -- Gather ancestors from existing DOM - local ancestryIds, ancestryIndex = {}, 0 + local ancestryIds = {} local parentObject = instance.Parent local parentId = instanceMap.fromInstances[parentObject] local previousId = nil @@ -211,8 +219,7 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) break end - ancestryIndex += 1 - ancestryIds[ancestryIndex] = parentId + table.insert(ancestryIds, 1, parentId) knownAncestors[parentId] = true parentObject = parentObject.Parent parentId = instanceMap.fromInstances[parentObject] @@ -221,42 +228,14 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) tree:buildAncestryNodes(previousId, ancestryIds, patch, instanceMap) -- Gather detail text - local changeList, hint = nil, nil + local changeList, changeInfo = nil, nil if next(change.changedProperties) or change.changedName then changeList = {} - local hintBuffer, hintBufferSize, hintOverflow = table.create(3), 0, 0 local changeIndex = 0 local function addProp(prop: string, current: any?, incoming: any?, metadata: any?) changeIndex += 1 changeList[changeIndex] = { prop, current, incoming, metadata } - - if hintBufferSize < 3 then - hintBufferSize += 1 - hintBuffer[hintBufferSize] = prop - return - end - - -- We only want to have 3 hints - -- to keep it deterministic, we sort them alphabetically - - -- Either this prop overflows, or it makes another one move to overflow - hintOverflow += 1 - - -- Shortcut for the common case - if hintBuffer[3] <= prop then - -- This prop is below the last hint, no need to insert - return - end - - -- Find the first available spot - for i, hintItem in hintBuffer do - if prop < hintItem then - -- This prop is before the currently selected hint, - -- so take its place and then continue to find a spot for the old hint - hintBuffer[i], prop = prop, hintBuffer[i] - end - end end -- Gather the changes @@ -276,8 +255,9 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) ) end - -- Finalize detail values - hint = table.concat(hintBuffer, ", ") .. (if hintOverflow == 0 then "" else ", " .. hintOverflow .. " more") + changeInfo = { + edits = changeIndex, + } -- Sort changes and add header table.sort(changeList, function(a, b) @@ -293,7 +273,7 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) className = instance.ClassName, name = instance.Name, instance = instance, - hint = hint, + changeInfo = changeInfo, changeList = changeList, }) end @@ -378,42 +358,14 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) tree:buildAncestryNodes(previousId, ancestryIds, patch, instanceMap) -- Gather detail text - local changeList, hint = nil, nil + local changeList, changeInfo = nil, nil if next(change.Properties) then changeList = {} - local hintBuffer, hintBufferSize, hintOverflow = table.create(3), 0, 0 local changeIndex = 0 local function addProp(prop: string, incoming: any) changeIndex += 1 changeList[changeIndex] = { prop, "N/A", incoming } - - if hintBufferSize < 3 then - hintBufferSize += 1 - hintBuffer[hintBufferSize] = prop - return - end - - -- We only want to have 3 hints - -- to keep it deterministic, we sort them alphabetically - - -- Either this prop overflows, or it makes another one move to overflow - hintOverflow += 1 - - -- Shortcut for the common case - if hintBuffer[3] <= prop then - -- This prop is below the last hint, no need to insert - return - end - - -- Find the first available spot - for i, hintItem in hintBuffer do - if prop < hintItem then - -- This prop is before the currently selected hint, - -- so take its place and then continue to find a spot for the old hint - hintBuffer[i], prop = prop, hintBuffer[i] - end - end end for prop, incoming in change.Properties do @@ -421,8 +373,9 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) addProp(prop, if success then incomingValue else select(2, next(incoming))) end - -- Finalize detail values - hint = table.concat(hintBuffer, ", ") .. (if hintOverflow == 0 then "" else ", " .. hintOverflow .. " more") + changeInfo = { + edits = changeIndex, + } -- Sort changes and add header table.sort(changeList, function(a, b) @@ -437,7 +390,7 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) patchType = "Add", className = change.ClassName, name = change.Name, - hint = hint, + changeInfo = changeInfo, changeList = changeList, instance = instanceMap.fromIds[id], }) @@ -475,6 +428,8 @@ function PatchTree.updateMetadata(tree, patch, instanceMap, unappliedPatch) if not node.changeList then continue end + + local warnings = 0 for _, change in node.changeList do local property = change[1] local propertyFailedToApply = if property == "Name" @@ -485,6 +440,8 @@ function PatchTree.updateMetadata(tree, patch, instanceMap, unappliedPatch) -- This change didn't fail, no need to mark continue end + + warnings += 1 if change[4] == nil then change[4] = { isWarning = true } else @@ -492,6 +449,11 @@ function PatchTree.updateMetadata(tree, patch, instanceMap, unappliedPatch) end Log.trace(" Marked property as warning: {}.{}", node.name, property) end + + node.changeInfo = { + edits = (node.changeInfo.edits or (#node.changeList - 1)) - warnings, + failed = if warnings > 0 then warnings else nil, + } end for failedAdditionId in unappliedPatch.added do local node = tree:getNode(failedAdditionId) @@ -505,6 +467,7 @@ function PatchTree.updateMetadata(tree, patch, instanceMap, unappliedPatch) if not node.changeList then continue end + for _, change in node.changeList do -- Failed addition means that all properties failed to be added if change[4] == nil then @@ -514,6 +477,10 @@ function PatchTree.updateMetadata(tree, patch, instanceMap, unappliedPatch) end Log.trace(" Marked property as warning: {}.{}", node.name, change[1]) end + + node.changeInfo = { + failed = node.changeInfo.edits or (#node.changeList - 1), + } end for _, failedRemovalIdOrInstance in unappliedPatch.removed do local failedRemovalId = if Types.RbxId(failedRemovalIdOrInstance) diff --git a/plugin/src/Reconciler/applyPatch.lua b/plugin/src/Reconciler/applyPatch.lua index 5ee6ed5e4..05e7412a8 100644 --- a/plugin/src/Reconciler/applyPatch.lua +++ b/plugin/src/Reconciler/applyPatch.lua @@ -20,6 +20,11 @@ local setProperty = require(script.Parent.setProperty) local function applyPatch(instanceMap, patch) local patchTimestamp = DateTime.now():FormatLocalTime("LTS", "en-us") + local historyRecording = ChangeHistoryService:TryBeginRecording("Rojo: Patch " .. patchTimestamp) + if not historyRecording then + -- There can only be one recording at a time + Log.debug("Failed to begin history recording for " .. patchTimestamp .. ". Another recording is in progress.") + end -- Tracks any portions of the patch that could not be applied to the DOM. local unappliedPatch = PatchSet.newEmpty() @@ -62,6 +67,9 @@ local function applyPatch(instanceMap, patch) if parentInstance == nil then -- This would be peculiar. If you create an instance with no -- parent, were you supposed to create it at all? + if historyRecording then + ChangeHistoryService:FinishRecording(historyRecording, Enum.FinishRecordingOperation.Commit) + end invariant( "Cannot add an instance from a patch that has no parent.\nInstance {} with parent {}.\nState: {:#?}", id, @@ -164,10 +172,14 @@ local function applyPatch(instanceMap, patch) end -- See you later, original instance. - -- + + -- Because the user might want to Undo this change, we cannot use Destroy + -- since that locks that parent and prevents ChangeHistoryService from + -- ever bringing it back. Instead, we parent to nil. + -- TODO: Can this fail? Some kinds of instance may not appreciate - -- being destroyed, like services. - instance:Destroy() + -- being reparented, like services. + instance.Parent = nil -- This completes your rebuilding a plane mid-flight safety -- instruction. Please sit back, relax, and enjoy your flight. @@ -214,7 +226,9 @@ local function applyPatch(instanceMap, patch) end end - ChangeHistoryService:SetWaypoint("Rojo: Patch " .. patchTimestamp) + if historyRecording then + ChangeHistoryService:FinishRecording(historyRecording, Enum.FinishRecordingOperation.Commit) + end return unappliedPatch end diff --git a/plugin/src/Reconciler/applyPatch.spec.lua b/plugin/src/Reconciler/applyPatch.spec.lua index c561db751..b44e3eda6 100644 --- a/plugin/src/Reconciler/applyPatch.spec.lua +++ b/plugin/src/Reconciler/applyPatch.spec.lua @@ -4,25 +4,41 @@ return function() local InstanceMap = require(script.Parent.Parent.InstanceMap) local PatchSet = require(script.Parent.Parent.PatchSet) - local dummy = Instance.new("Folder") - local function wasDestroyed(instance) + local container = Instance.new("Folder") + + local tempContainer = Instance.new("Folder") + local function wasRemoved(instance) -- If an instance was destroyed, its parent property is locked. - local ok = pcall(function() + -- If an instance was removed, its parent property is nil. + -- We need to ensure we only remove, so that ChangeHistoryService can still Undo. + + local isParentUnlocked = pcall(function() local oldParent = instance.Parent - instance.Parent = dummy + instance.Parent = tempContainer instance.Parent = oldParent end) - return not ok + return instance.Parent == nil and isParentUnlocked end + beforeEach(function() + container:ClearAllChildren() + end) + + afterAll(function() + container:Destroy() + tempContainer:Destroy() + end) + it("should return an empty patch if given an empty patch", function() local patch = applyPatch(InstanceMap.new(), PatchSet.newEmpty()) assert(PatchSet.isEmpty(patch), "expected remaining patch to be empty") end) - it("should destroy instances listed for remove", function() + it("should remove instances listed for remove", function() local root = Instance.new("Folder") + root.Name = "ROOT" + root.Parent = container local child = Instance.new("Folder") child.Name = "Child" @@ -38,14 +54,16 @@ return function() local unapplied = applyPatch(instanceMap, patch) assert(PatchSet.isEmpty(unapplied), "expected remaining patch to be empty") - assert(not wasDestroyed(root), "expected root to be left alone") - assert(wasDestroyed(child), "expected child to be destroyed") + assert(not wasRemoved(root), "expected root to be left alone") + assert(wasRemoved(child), "expected child to be removed") instanceMap:stop() end) - it("should destroy IDs listed for remove", function() + it("should remove IDs listed for remove", function() local root = Instance.new("Folder") + root.Name = "ROOT" + root.Parent = container local child = Instance.new("Folder") child.Name = "Child" @@ -62,8 +80,8 @@ return function() assert(PatchSet.isEmpty(unapplied), "expected remaining patch to be empty") expect(instanceMap:size()).to.equal(1) - assert(not wasDestroyed(root), "expected root to be left alone") - assert(wasDestroyed(child), "expected child to be destroyed") + assert(not wasRemoved(root), "expected root to be left alone") + assert(wasRemoved(child), "expected child to be removed") instanceMap:stop() end) @@ -73,6 +91,8 @@ return function() -- tests on reify, not here. local root = Instance.new("Folder") + root.Name = "ROOT" + root.Parent = container local instanceMap = InstanceMap.new() instanceMap:insert("ROOT", root) @@ -113,6 +133,8 @@ return function() it("should return unapplied additions when instances cannot be created", function() local root = Instance.new("Folder") + root.Name = "ROOT" + root.Parent = container local instanceMap = InstanceMap.new() instanceMap:insert("ROOT", root) @@ -159,6 +181,7 @@ return function() it("should recreate instances when changedClassName is set, preserving children", function() local root = Instance.new("Folder") root.Name = "Initial Root Name" + root.Parent = container local child = Instance.new("Folder") child.Name = "Child" diff --git a/plugin/src/ServeSession.lua b/plugin/src/ServeSession.lua index 82d8fd42f..bb844d062 100644 --- a/plugin/src/ServeSession.lua +++ b/plugin/src/ServeSession.lua @@ -13,6 +13,7 @@ local InstanceMap = require(script.Parent.InstanceMap) local PatchSet = require(script.Parent.PatchSet) local Reconciler = require(script.Parent.Reconciler) local strict = require(script.Parent.strict) +local Settings = require(script.Parent.Settings) local Status = strict("Session.Status", { NotStarted = "NotStarted", @@ -50,7 +51,6 @@ ServeSession.Status = Status local validateServeOptions = t.strictInterface({ apiContext = t.table, - openScriptsExternally = t.boolean, twoWaySync = t.boolean, }) @@ -89,7 +89,6 @@ function ServeSession.new(options) self = { __status = Status.NotStarted, __apiContext = options.apiContext, - __openScriptsExternally = options.openScriptsExternally, __twoWaySync = options.twoWaySync, __reconciler = reconciler, __instanceMap = instanceMap, @@ -170,7 +169,7 @@ function ServeSession:__applyGameAndPlaceId(serverInfo) end function ServeSession:__onActiveScriptChanged(activeScript) - if not self.__openScriptsExternally then + if not Settings:get("openScriptsExternally") then Log.trace("Not opening script {} because feature not enabled.", activeScript) return diff --git a/plugin/src/Settings.lua b/plugin/src/Settings.lua index 2b1c121db..17971ecd8 100644 --- a/plugin/src/Settings.lua +++ b/plugin/src/Settings.lua @@ -14,6 +14,8 @@ local defaultSettings = { twoWaySync = false, showNotifications = true, syncReminder = true, + checkForUpdates = true, + checkForPrereleases = false, autoConnectPlaytestServer = false, confirmationBehavior = "Initial", largeChangesConfirmationThreshold = 5, diff --git a/plugin/src/Version.lua b/plugin/src/Version.lua index 6c93a14e1..d95702e89 100644 --- a/plugin/src/Version.lua +++ b/plugin/src/Version.lua @@ -1,3 +1,7 @@ +local Packages = script.Parent.Parent.Packages +local Http = require(Packages.Http) +local Promise = require(Packages.Promise) + local function compare(a, b) if a > b then return 1 @@ -30,7 +34,48 @@ function Version.compare(a, b) return minor end - return revision + if revision ~= 0 then + return revision + end + + local aPrerelease = if a[4] == "" then nil else a[4] + local bPrerelease = if b[4] == "" then nil else b[4] + + -- If neither are prerelease, they are the same + if aPrerelease == nil and bPrerelease == nil then + return 0 + end + + -- If one is prerelease it is older + if aPrerelease ~= nil and bPrerelease == nil then + return -1 + end + if aPrerelease == nil and bPrerelease ~= nil then + return 1 + end + + -- If they are both prereleases, compare those based on number + local aPrereleaseNumeric = string.match(aPrerelease, "(%d+).*$") + local bPrereleaseNumeric = string.match(bPrerelease, "(%d+).*$") + + if aPrereleaseNumeric == nil or bPrereleaseNumeric == nil then + -- If one or both lack a number, comparing isn't meaningful + return 0 + end + return compare(tonumber(aPrereleaseNumeric) or 0, tonumber(bPrereleaseNumeric) or 0) +end + +function Version.parse(versionString: string) + local version = { string.match(versionString, "^v?(%d+)%.(%d+)%.(%d+)(.*)$") } + for i, v in version do + version[i] = tonumber(v) or v + end + + if version[4] == "" then + version[4] = nil + end + + return version end function Version.display(version) @@ -43,4 +88,64 @@ function Version.display(version) return output end +function Version.retrieveLatestCompatible(options: { + version: { number }, + includePrereleases: boolean?, +}): { + version: { number }, + prerelease: boolean, + publishedUnixTimestamp: number, +}? + local success, releases = Http.get("https://api.github.com/repos/rojo-rbx/rojo/releases?per_page=10") + :andThen(function(response) + if response.code >= 400 then + local message = string.format("HTTP %s:\n%s", tostring(response.code), response.body) + + return Promise.reject(message) + end + + return response + end) + :andThen(Http.Response.json) + :await() + + if success == false or type(releases) ~= "table" or next(releases) ~= 1 then + return nil + end + + -- Iterate through releases, looking for the latest compatible version + local latestCompatible = nil + for _, release in releases do + -- Skip prereleases if they are not requested + if (not options.includePrereleases) and release.prerelease then + continue + end + + local releaseVersion = Version.parse(release.tag_name) + + -- Skip releases that are potentially incompatible + if releaseVersion[1] > options.version[1] then + continue + end + + -- Skip releases that are older than the latest compatible version + if latestCompatible ~= nil and Version.compare(releaseVersion, latestCompatible.version) <= 0 then + continue + end + + latestCompatible = { + version = releaseVersion, + prerelease = release.prerelease, + publishedUnixTimestamp = DateTime.fromIsoDate(release.published_at).UnixTimestamp, + } + end + + -- Don't return anything if the latest found is not newer than the current version + if latestCompatible == nil or Version.compare(latestCompatible.version, options.version) <= 0 then + return nil + end + + return latestCompatible +end + return Version diff --git a/plugin/src/Version.spec.lua b/plugin/src/Version.spec.lua index cf9938d9c..f1e9eba22 100644 --- a/plugin/src/Version.spec.lua +++ b/plugin/src/Version.spec.lua @@ -3,6 +3,7 @@ return function() it("should compare equal versions", function() expect(Version.compare({ 1, 2, 3 }, { 1, 2, 3 })).to.equal(0) + expect(Version.compare({ 1, 2, 3, "rc1" }, { 1, 2, 3, "rc1" })).to.equal(0) expect(Version.compare({ 0, 4, 0 }, { 0, 4 })).to.equal(0) expect(Version.compare({ 0, 0, 123 }, { 0, 0, 123 })).to.equal(0) expect(Version.compare({ 26 }, { 26 })).to.equal(0) @@ -13,6 +14,7 @@ return function() it("should compare newer, older versions", function() expect(Version.compare({ 1 }, { 0 })).to.equal(1) expect(Version.compare({ 1, 1 }, { 1, 0 })).to.equal(1) + expect(Version.compare({ 1, 2, 3 }, { 1, 2, 0 })).to.equal(1) end) it("should compare different major versions", function() @@ -25,4 +27,37 @@ return function() expect(Version.compare({ 1, 2, 3 }, { 1, 3, 2 })).to.equal(-1) expect(Version.compare({ 50, 1 }, { 50, 2 })).to.equal(-1) end) + + it("should compare different patch versions", function() + expect(Version.compare({ 1, 1, 3 }, { 1, 1, 2 })).to.equal(1) + expect(Version.compare({ 1, 1, 2 }, { 1, 1, 3 })).to.equal(-1) + expect(Version.compare({ 1, 1, 3, "-rc1" }, { 1, 1, 2, "-rc2" })).to.equal(1) + expect(Version.compare({ 1, 1, 2, "-rc5" }, { 1, 1, 3, "-alpha" })).to.equal(-1) + end) + + it("should compare prerelease tags", function() + expect(Version.compare({ 1, 0, 0, "-alpha" }, { 1, 0, 0 })).to.equal(-1) + expect(Version.compare({ 1, 0, 0 }, { 1, 0, 0, "-alpha" })).to.equal(1) + expect(Version.compare({ 1, 0, 0, "-rc1" }, { 1, 0, 0, "-rc2" })).to.equal(-1) + expect(Version.compare({ 1, 0, 0, "-rc2" }, { 1, 0, 0, "-rc1" })).to.equal(1) + + -- Non number prereleases are not compared since that isn't meaningful + expect(Version.compare({ 1, 0, 0, "-alpha" }, { 1, 0, 0, "-beta" })).to.equal(0) + end) + + it("should parse version from strings", function() + local a = Version.parse("v1.0.0") + expect(a).to.be.ok() + expect(a[1]).to.equal(1) + expect(a[2]).to.equal(0) + expect(a[3]).to.equal(0) + expect(a[4]).to.equal(nil) + + local b = Version.parse("7.3.1-rc1") + expect(b).to.be.ok() + expect(b[1]).to.equal(7) + expect(b[2]).to.equal(3) + expect(b[3]).to.equal(1) + expect(b[4]).to.equal("-rc1") + end) end diff --git a/plugin/src/timeUtil.lua b/plugin/src/timeUtil.lua new file mode 100644 index 000000000..280f72ef4 --- /dev/null +++ b/plugin/src/timeUtil.lua @@ -0,0 +1,31 @@ +local timeUtil = {} + +timeUtil.AGE_UNITS = table.freeze({ + { 31556909, "year" }, + { 2629743, "month" }, + { 604800, "week" }, + { 86400, "day" }, + { 3600, "hour" }, + { 60, "minute" }, +}) + +function timeUtil.elapsedToText(elapsed: number): string + if elapsed < 3 then + return "just now" + end + + local ageText = string.format("%d seconds ago", elapsed) + + for _, UnitData in timeUtil.AGE_UNITS do + local UnitSeconds, UnitName = UnitData[1], UnitData[2] + if elapsed > UnitSeconds then + local c = math.floor(elapsed / UnitSeconds) + ageText = string.format("%d %s%s ago", c, UnitName, c > 1 and "s" or "") + break + end + end + + return ageText +end + +return timeUtil diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_default_project.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_default_project.snap new file mode 100644 index 000000000..fbbd49116 --- /dev/null +++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_default_project.snap @@ -0,0 +1,22 @@ +--- +source: tests/tests/build.rs +expression: contents +--- + + + + top-level + + + + second-level + + + + third-level + 1337 + + + + + diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_project.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_project.snap new file mode 100644 index 000000000..588979334 --- /dev/null +++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_project.snap @@ -0,0 +1,22 @@ +--- +source: tests/tests/build.rs +expression: contents +--- + + + + no_name_project + + + + second-level + + + + bool_value + true + + + + + diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_top_level_project.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_top_level_project.snap new file mode 100644 index 000000000..2f2e3d6ad --- /dev/null +++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__no_name_top_level_project.snap @@ -0,0 +1,13 @@ +--- +source: tests/tests/build.rs +assertion_line: 107 +expression: contents +--- + + + + no_name_top_level_project + If this isn't named `no_name_top_level_project`, something went wrong! + + + diff --git a/rojo-test/build-tests/no_name_default_project/default.project.json b/rojo-test/build-tests/no_name_default_project/default.project.json new file mode 100644 index 000000000..1c2a1400d --- /dev/null +++ b/rojo-test/build-tests/no_name_default_project/default.project.json @@ -0,0 +1,9 @@ +{ + "name": "top-level", + "tree": { + "$className": "Folder", + "second-level": { + "$path": "src" + } + } +} \ No newline at end of file diff --git a/rojo-test/build-tests/no_name_default_project/src/third-level/default.project.json b/rojo-test/build-tests/no_name_default_project/src/third-level/default.project.json new file mode 100644 index 000000000..e7b87be1c --- /dev/null +++ b/rojo-test/build-tests/no_name_default_project/src/third-level/default.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "IntValue", + "$properties": { + "Value": 1337 + } + } +} \ No newline at end of file diff --git a/rojo-test/build-tests/no_name_project/default.project.json b/rojo-test/build-tests/no_name_project/default.project.json new file mode 100644 index 000000000..93ef2e8ce --- /dev/null +++ b/rojo-test/build-tests/no_name_project/default.project.json @@ -0,0 +1,9 @@ +{ + "name": "no_name_project", + "tree": { + "$className": "Folder", + "second-level": { + "$path": "src" + } + } +} \ No newline at end of file diff --git a/rojo-test/build-tests/no_name_project/src/bool_value.project.json b/rojo-test/build-tests/no_name_project/src/bool_value.project.json new file mode 100644 index 000000000..6be58a3ce --- /dev/null +++ b/rojo-test/build-tests/no_name_project/src/bool_value.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "BoolValue", + "$properties": { + "Value": true + } + } +} \ No newline at end of file diff --git a/rojo-test/build-tests/no_name_top_level_project/default.project.json b/rojo-test/build-tests/no_name_top_level_project/default.project.json new file mode 100644 index 000000000..845ae3725 --- /dev/null +++ b/rojo-test/build-tests/no_name_top_level_project/default.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "StringValue", + "$properties": { + "Value": "If this isn't named `no_name_top_level_project`, something went wrong!" + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap new file mode 100644 index 000000000..a8179a919 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_all.snap @@ -0,0 +1,39 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: + - id-3 + ClassName: Folder + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: top-level + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + ClassName: Folder + Id: id-3 + Metadata: + ignoreUnknownInstances: false + Name: second-level + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: IntValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: third-level + Parent: id-3 + Properties: + Value: + Int64: 1337 +messageCursor: 0 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_info.snap new file mode 100644 index 000000000..954ba6229 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_default_project_info.snap @@ -0,0 +1,14 @@ +--- +source: tests/tests/serve.rs +assertion_line: 316 +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: top-level +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap new file mode 100644 index 000000000..1b398a928 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_all.snap @@ -0,0 +1,40 @@ +--- +source: tests/tests/serve.rs +assertion_line: 338 +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: + - id-3 + ClassName: Folder + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: no_name_project + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + ClassName: Folder + Id: id-3 + Metadata: + ignoreUnknownInstances: false + Name: second-level + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: BoolValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: bool_value + Parent: id-3 + Properties: + Value: + Bool: true +messageCursor: 0 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_info.snap new file mode 100644 index 000000000..d9772de1c --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_project_info.snap @@ -0,0 +1,14 @@ +--- +source: tests/tests/serve.rs +assertion_line: 335 +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: no_name_project +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap new file mode 100644 index 000000000..2941eea8c --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all-2.snap @@ -0,0 +1,19 @@ +--- +source: tests/tests/serve.rs +assertion_line: 370 +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: [] + ClassName: StringValue + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: no_name_top_level_project + Parent: "00000000000000000000000000000000" + Properties: + Value: + String: "If this isn't named `no_name_top_level_project`, something went wrong!" +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap new file mode 100644 index 000000000..ea52fe4bf --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_all.snap @@ -0,0 +1,20 @@ +--- +source: tests/tests/serve.rs +assertion_line: 357 +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: [] + ClassName: StringValue + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: no_name_top_level_project + Parent: "00000000000000000000000000000000" + Properties: + Value: + String: "If this isn't named `no_name_top_level_project`, something went wrong!" +messageCursor: 0 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_info.snap new file mode 100644 index 000000000..3ad79c37e --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__no_name_top_level_project_info.snap @@ -0,0 +1,14 @@ +--- +source: tests/tests/serve.rs +assertion_line: 351 +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: no_name_top_level_project +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap new file mode 100644 index 000000000..63f6c5504 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all-2.snap @@ -0,0 +1,141 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-10: + Children: [] + ClassName: ObjectValue + Id: id-10 + Metadata: + ignoreUnknownInstances: true + Name: ProjectPointer + Parent: id-9 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: project target + Value: + Ref: id-9 + id-11: + Children: [] + ClassName: Model + Id: id-11 + Metadata: + ignoreUnknownInstances: false + Name: ProjectPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: project target + PrimaryPart: + Ref: id-9 + id-2: + Children: + - id-3 + ClassName: DataModel + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: ref_properties + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + - id-5 + - id-7 + - id-9 + ClassName: Workspace + Id: id-3 + Metadata: + ignoreUnknownInstances: true + Name: Workspace + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: ObjectValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: CrossFormatPointer + Parent: id-3 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-5: + Children: + - id-6 + ClassName: Folder + Id: id-5 + Metadata: + ignoreUnknownInstances: false + Name: FolderTarget + Parent: id-3 + Properties: {} + id-6: + Children: [] + ClassName: ObjectValue + Id: id-6 + Metadata: + ignoreUnknownInstances: false + Name: FolderPointer + Parent: id-5 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-7: + Children: + - id-8 + - id-11 + ClassName: Folder + Id: id-7 + Metadata: + ignoreUnknownInstances: false + Name: ModelTarget + Parent: id-3 + Properties: + Attributes: + Attributes: + Rojo_Id: + String: model target 2 + id-8: + Children: [] + ClassName: Model + Id: id-8 + Metadata: + ignoreUnknownInstances: false + Name: ModelPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: model target 2 + PrimaryPart: + Ref: id-7 + id-9: + Children: + - id-10 + ClassName: Folder + Id: id-9 + Metadata: + ignoreUnknownInstances: true + Name: ProjectTarget + Parent: id-3 + Properties: {} +messageCursor: 1 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap new file mode 100644 index 000000000..7fe614cd8 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_all.snap @@ -0,0 +1,121 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-10: + Children: [] + ClassName: ObjectValue + Id: id-10 + Metadata: + ignoreUnknownInstances: true + Name: ProjectPointer + Parent: id-9 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: project target + Value: + Ref: id-9 + id-2: + Children: + - id-3 + ClassName: DataModel + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: ref_properties + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + - id-5 + - id-7 + - id-9 + ClassName: Workspace + Id: id-3 + Metadata: + ignoreUnknownInstances: true + Name: Workspace + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: ObjectValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: CrossFormatPointer + Parent: id-3 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-5: + Children: + - id-6 + ClassName: Folder + Id: id-5 + Metadata: + ignoreUnknownInstances: false + Name: FolderTarget + Parent: id-3 + Properties: {} + id-6: + Children: [] + ClassName: ObjectValue + Id: id-6 + Metadata: + ignoreUnknownInstances: false + Name: FolderPointer + Parent: id-5 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-7: + Children: + - id-8 + ClassName: Folder + Id: id-7 + Metadata: + ignoreUnknownInstances: false + Name: ModelTarget + Parent: id-3 + Properties: {} + id-8: + Children: [] + ClassName: Model + Id: id-8 + Metadata: + ignoreUnknownInstances: false + Name: ModelPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: model target + PrimaryPart: + Ref: id-7 + id-9: + Children: + - id-10 + ClassName: Folder + Id: id-9 + Metadata: + ignoreUnknownInstances: true + Name: ProjectTarget + Parent: id-3 + Properties: {} +messageCursor: 0 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_info.snap new file mode 100644 index 000000000..46ee7ea0a --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_info.snap @@ -0,0 +1,13 @@ +--- +source: tests/tests/serve.rs +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: ref_properties +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap new file mode 100644 index 000000000..f29e43e62 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all-2.snap @@ -0,0 +1,120 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-10: + Children: [] + ClassName: ObjectValue + Id: id-10 + Metadata: + ignoreUnknownInstances: true + Name: ProjectPointer + Parent: id-9 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: project target + Value: + Ref: id-9 + id-2: + Children: + - id-3 + ClassName: DataModel + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: ref_properties + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + - id-5 + - id-7 + - id-9 + ClassName: Workspace + Id: id-3 + Metadata: + ignoreUnknownInstances: true + Name: Workspace + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: ObjectValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: CrossFormatPointer + Parent: id-3 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-5: + Children: + - id-6 + ClassName: Folder + Id: id-5 + Metadata: + ignoreUnknownInstances: false + Name: FolderTarget + Parent: id-3 + Properties: {} + id-6: + Children: [] + ClassName: ObjectValue + Id: id-6 + Metadata: + ignoreUnknownInstances: false + Name: FolderPointer + Parent: id-5 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-7: + Children: + - id-8 + ClassName: Folder + Id: id-7 + Metadata: + ignoreUnknownInstances: false + Name: ModelTarget + Parent: id-3 + Properties: {} + id-8: + Children: [] + ClassName: Model + Id: id-8 + Metadata: + ignoreUnknownInstances: false + Name: ModelPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: model target + PrimaryPart: + Ref: id-7 + id-9: + Children: + - id-10 + ClassName: Folder + Id: id-9 + Metadata: + ignoreUnknownInstances: true + Name: ProjectTarget + Parent: id-3 + Properties: {} +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap new file mode 100644 index 000000000..f29e43e62 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_all.snap @@ -0,0 +1,120 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-10: + Children: [] + ClassName: ObjectValue + Id: id-10 + Metadata: + ignoreUnknownInstances: true + Name: ProjectPointer + Parent: id-9 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: project target + Value: + Ref: id-9 + id-2: + Children: + - id-3 + ClassName: DataModel + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: ref_properties + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: + - id-4 + - id-5 + - id-7 + - id-9 + ClassName: Workspace + Id: id-3 + Metadata: + ignoreUnknownInstances: true + Name: Workspace + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: ObjectValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: CrossFormatPointer + Parent: id-3 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-5: + Children: + - id-6 + ClassName: Folder + Id: id-5 + Metadata: + ignoreUnknownInstances: false + Name: FolderTarget + Parent: id-3 + Properties: {} + id-6: + Children: [] + ClassName: ObjectValue + Id: id-6 + Metadata: + ignoreUnknownInstances: false + Name: FolderPointer + Parent: id-5 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: folder target + Value: + Ref: id-5 + id-7: + Children: + - id-8 + ClassName: Folder + Id: id-7 + Metadata: + ignoreUnknownInstances: false + Name: ModelTarget + Parent: id-3 + Properties: {} + id-8: + Children: [] + ClassName: Model + Id: id-8 + Metadata: + ignoreUnknownInstances: false + Name: ModelPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: model target + PrimaryPart: + Ref: id-7 + id-9: + Children: + - id-10 + ClassName: Folder + Id: id-9 + Metadata: + ignoreUnknownInstances: true + Name: ProjectTarget + Parent: id-3 + Properties: {} +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_info.snap new file mode 100644 index 000000000..ac25f16b3 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_patch_update_info.snap @@ -0,0 +1,12 @@ +--- +source: tests/tests/serve.rs +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: ref_properties +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap new file mode 100644 index 000000000..e548f0108 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all-2.snap @@ -0,0 +1,33 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: + - id-3 + ClassName: Folder + Id: id-2 + Metadata: + ignoreUnknownInstances: false + Name: ref_properties_remove + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: [] + ClassName: ObjectValue + Id: id-3 + Metadata: + ignoreUnknownInstances: false + Name: pointer + Parent: id-2 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: test pointer + Value: + Ref: id-4 +messageCursor: 1 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap new file mode 100644 index 000000000..407670daa --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_all.snap @@ -0,0 +1,47 @@ +--- +source: tests/tests/serve.rs +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: + - id-3 + - id-4 + ClassName: Folder + Id: id-2 + Metadata: + ignoreUnknownInstances: false + Name: ref_properties_remove + Parent: "00000000000000000000000000000000" + Properties: {} + id-3: + Children: [] + ClassName: ObjectValue + Id: id-3 + Metadata: + ignoreUnknownInstances: false + Name: pointer + Parent: id-2 + Properties: + Attributes: + Attributes: + Rojo_Target_Value: + String: test pointer + Value: + Ref: id-4 + id-4: + Children: [] + ClassName: ObjectValue + Id: id-4 + Metadata: + ignoreUnknownInstances: false + Name: target + Parent: id-2 + Properties: + Attributes: + Attributes: + Rojo_Id: + String: test pointer +messageCursor: 0 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_info.snap new file mode 100644 index 000000000..b51fd1f80 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_info.snap @@ -0,0 +1,13 @@ +--- +source: tests/tests/serve.rs +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: ref_properties_remove +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_subscribe.snap new file mode 100644 index 000000000..92432570f --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_remove_subscribe.snap @@ -0,0 +1,12 @@ +--- +source: tests/tests/serve.rs +expression: "subscribe_response.intern_and_redact(&mut redactions, ())" +--- +messageCursor: 1 +messages: + - added: {} + removed: + - id-4 + updated: [] +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap new file mode 100644 index 000000000..4500894aa --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__ref_properties_subscribe.snap @@ -0,0 +1,46 @@ +--- +source: tests/tests/serve.rs +expression: "subscribe_response.intern_and_redact(&mut redactions, ())" +--- +messageCursor: 1 +messages: + - added: + id-11: + Children: [] + ClassName: Model + Id: id-11 + Metadata: + ignoreUnknownInstances: false + Name: ProjectPointer + Parent: id-7 + Properties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: project target + PrimaryPart: + Ref: id-9 + removed: [] + updated: + - changedClassName: ~ + changedMetadata: + ignoreUnknownInstances: false + changedName: ~ + changedProperties: + Attributes: + Attributes: + Rojo_Id: + String: model target 2 + id: id-7 + - changedClassName: ~ + changedMetadata: ~ + changedName: ~ + changedProperties: + Attributes: + Attributes: + Rojo_Target_PrimaryPart: + String: model target 2 + PrimaryPart: ~ + id: id-8 +sessionId: id-1 + diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap new file mode 100644 index 000000000..0b25468a8 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_all.snap @@ -0,0 +1,41 @@ +--- +source: tests/tests/serve.rs +assertion_line: 389 +expression: "read_response.intern_and_redact(&mut redactions, root_id)" +--- +instances: + id-2: + Children: + - id-3 + ClassName: StringValue + Id: id-2 + Metadata: + ignoreUnknownInstances: true + Name: sync_rule_no_name_project + Parent: "00000000000000000000000000000000" + Properties: + Value: + String: "This should be named `sync_rule_no_name_project` and have a child at `src/not_a_project`" + id-3: + Children: + - id-4 + ClassName: Folder + Id: id-3 + Metadata: + ignoreUnknownInstances: false + Name: src + Parent: id-2 + Properties: {} + id-4: + Children: [] + ClassName: StringValue + Id: id-4 + Metadata: + ignoreUnknownInstances: true + Name: not_a_project + Parent: id-3 + Properties: + Value: + String: "If this isn't named `not_a_project`, something has gone wrong!" +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_info.snap b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_info.snap new file mode 100644 index 000000000..532e8b2e1 --- /dev/null +++ b/rojo-test/serve-test-snapshots/end_to_end__tests__serve__sync_rule_no_name_project_info.snap @@ -0,0 +1,13 @@ +--- +source: tests/tests/serve.rs +assertion_line: 383 +expression: redactions.redacted_yaml(info) +--- +expectedPlaceIds: ~ +gameId: ~ +placeId: ~ +projectName: sync_rule_no_name_project +protocolVersion: 4 +rootInstanceId: id-2 +serverVersion: "[server-version]" +sessionId: id-1 diff --git a/rojo-test/serve-tests/no_name_default_project/default.project.json b/rojo-test/serve-tests/no_name_default_project/default.project.json new file mode 100644 index 000000000..1c2a1400d --- /dev/null +++ b/rojo-test/serve-tests/no_name_default_project/default.project.json @@ -0,0 +1,9 @@ +{ + "name": "top-level", + "tree": { + "$className": "Folder", + "second-level": { + "$path": "src" + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/no_name_default_project/src/third-level/default.project.json b/rojo-test/serve-tests/no_name_default_project/src/third-level/default.project.json new file mode 100644 index 000000000..e7b87be1c --- /dev/null +++ b/rojo-test/serve-tests/no_name_default_project/src/third-level/default.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "IntValue", + "$properties": { + "Value": 1337 + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/no_name_project/default.project.json b/rojo-test/serve-tests/no_name_project/default.project.json new file mode 100644 index 000000000..93ef2e8ce --- /dev/null +++ b/rojo-test/serve-tests/no_name_project/default.project.json @@ -0,0 +1,9 @@ +{ + "name": "no_name_project", + "tree": { + "$className": "Folder", + "second-level": { + "$path": "src" + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/no_name_project/src/bool_value.project.json b/rojo-test/serve-tests/no_name_project/src/bool_value.project.json new file mode 100644 index 000000000..6be58a3ce --- /dev/null +++ b/rojo-test/serve-tests/no_name_project/src/bool_value.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "BoolValue", + "$properties": { + "Value": true + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/no_name_top_level_project/default.project.json b/rojo-test/serve-tests/no_name_top_level_project/default.project.json new file mode 100644 index 000000000..845ae3725 --- /dev/null +++ b/rojo-test/serve-tests/no_name_top_level_project/default.project.json @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "StringValue", + "$properties": { + "Value": "If this isn't named `no_name_top_level_project`, something went wrong!" + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties/FolderTarget/FolderPointer.model.json b/rojo-test/serve-tests/ref_properties/FolderTarget/FolderPointer.model.json new file mode 100644 index 000000000..a4543ff4d --- /dev/null +++ b/rojo-test/serve-tests/ref_properties/FolderTarget/FolderPointer.model.json @@ -0,0 +1,6 @@ +{ + "className": "ObjectValue", + "attributes": { + "Rojo_Target_Value": "folder target" + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties/FolderTarget/init.meta.json b/rojo-test/serve-tests/ref_properties/FolderTarget/init.meta.json new file mode 100644 index 000000000..1705a7be2 --- /dev/null +++ b/rojo-test/serve-tests/ref_properties/FolderTarget/init.meta.json @@ -0,0 +1,3 @@ +{ + "id": "folder target" +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties/ModelTarget.model.json b/rojo-test/serve-tests/ref_properties/ModelTarget.model.json new file mode 100644 index 000000000..367103658 --- /dev/null +++ b/rojo-test/serve-tests/ref_properties/ModelTarget.model.json @@ -0,0 +1,13 @@ +{ + "id": "model target", + "className": "Folder", + "children": [ + { + "name": "ModelPointer", + "className": "Model", + "attributes": { + "Rojo_Target_PrimaryPart": "model target" + } + } + ] +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties/default.project.json b/rojo-test/serve-tests/ref_properties/default.project.json new file mode 100644 index 000000000..8ffa1908f --- /dev/null +++ b/rojo-test/serve-tests/ref_properties/default.project.json @@ -0,0 +1,32 @@ +{ + "name": "ref_properties", + "tree": { + "$className": "DataModel", + "Workspace": { + "ProjectTarget": { + "$className": "Folder", + "$id": "project target", + "ProjectPointer": { + "$className": "ObjectValue", + "$attributes": { + "Rojo_Target_Value": { + "String": "project target" + } + } + } + }, + "ModelTarget": { + "$path": "ModelTarget.model.json" + }, + "FolderTarget": { + "$path": "FolderTarget" + }, + "CrossFormatPointer": { + "$className": "ObjectValue", + "$attributes": { + "Rojo_Target_Value": "folder target" + } + } + } + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties_remove/default.project.json b/rojo-test/serve-tests/ref_properties_remove/default.project.json new file mode 100644 index 000000000..43f94765b --- /dev/null +++ b/rojo-test/serve-tests/ref_properties_remove/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "ref_properties_remove", + "tree": { + "$path": "src" + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties_remove/src/pointer.model.json b/rojo-test/serve-tests/ref_properties_remove/src/pointer.model.json new file mode 100644 index 000000000..4add638b9 --- /dev/null +++ b/rojo-test/serve-tests/ref_properties_remove/src/pointer.model.json @@ -0,0 +1,6 @@ +{ + "className": "ObjectValue", + "attributes": { + "Rojo_Target_Value": "test pointer" + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/ref_properties_remove/src/target.model.json b/rojo-test/serve-tests/ref_properties_remove/src/target.model.json new file mode 100644 index 000000000..8069631e4 --- /dev/null +++ b/rojo-test/serve-tests/ref_properties_remove/src/target.model.json @@ -0,0 +1,6 @@ +{ + "className": "ObjectValue", + "attributes": { + "Rojo_Id": "test pointer" + } +} \ No newline at end of file diff --git a/rojo-test/serve-tests/sync_rule_no_name_project/default.project.json b/rojo-test/serve-tests/sync_rule_no_name_project/default.project.json new file mode 100644 index 000000000..647c0adb4 --- /dev/null +++ b/rojo-test/serve-tests/sync_rule_no_name_project/default.project.json @@ -0,0 +1,17 @@ +{ + "tree": { + "$className": "StringValue", + "$properties": { + "Value": "This should be named `sync_rule_no_name_project` and have a child at `src/not_a_project`" + }, + "src": { + "$path": "src" + } + }, + "syncRules": [ + { + "use": "project", + "pattern": "*.rojo" + } + ] +} \ No newline at end of file diff --git a/rojo-test/serve-tests/sync_rule_no_name_project/src/not_a_project.rojo b/rojo-test/serve-tests/sync_rule_no_name_project/src/not_a_project.rojo new file mode 100644 index 000000000..83b08b77a --- /dev/null +++ b/rojo-test/serve-tests/sync_rule_no_name_project/src/not_a_project.rojo @@ -0,0 +1,8 @@ +{ + "tree": { + "$className": "StringValue", + "$properties": { + "Value": "If this isn't named `not_a_project`, something has gone wrong!" + } + } +} \ No newline at end of file diff --git a/src/change_processor.rs b/src/change_processor.rs index 497ba4e79..c5978b8c5 100644 --- a/src/change_processor.rs +++ b/src/change_processor.rs @@ -136,7 +136,7 @@ impl JobThreadContext { // created all at once. let mut current_path = path.as_path(); let affected_ids = loop { - let ids = tree.get_ids_at_path(¤t_path); + let ids = tree.get_ids_at_path(current_path); log::trace!("Path {} affects IDs {:?}", current_path.display(), ids); diff --git a/src/cli/build.rs b/src/cli/build.rs index 2dd3b8543..c2ddebb3f 100644 --- a/src/cli/build.rs +++ b/src/cli/build.rs @@ -23,7 +23,7 @@ const UNKNOWN_PLUGIN_KIND_ERR: &str = "Could not detect what kind of file to bui /// Generates a model or place file from the Rojo project. #[derive(Debug, Parser)] pub struct BuildCommand { - /// Path to the project to serve. Defaults to the current directory. + /// Path to the project to build. Defaults to the current directory. #[clap(default_value = "")] pub project: PathBuf, diff --git a/src/cli/fmt_project.rs b/src/cli/fmt_project.rs index 9c3e88d31..1c1659744 100644 --- a/src/cli/fmt_project.rs +++ b/src/cli/fmt_project.rs @@ -2,6 +2,7 @@ use std::path::PathBuf; use anyhow::Context; use clap::Parser; +use memofs::Vfs; use crate::project::Project; @@ -17,8 +18,11 @@ pub struct FmtProjectCommand { impl FmtProjectCommand { pub fn run(self) -> anyhow::Result<()> { + let vfs = Vfs::new_default(); + vfs.set_watch_enabled(false); + let base_path = resolve_path(&self.project); - let project = Project::load_fuzzy(&base_path)? + let project = Project::load_fuzzy(&vfs, &base_path)? .context("A project file is required to run 'rojo fmt-project'")?; let serialized = serde_json::to_string_pretty(&project) diff --git a/src/cli/sourcemap.rs b/src/cli/sourcemap.rs index ec4e95280..cbb801c5e 100644 --- a/src/cli/sourcemap.rs +++ b/src/cli/sourcemap.rs @@ -67,7 +67,7 @@ impl SourcemapCommand { let vfs = Vfs::new_default(); vfs.set_watch_enabled(self.watch); - let session = ServeSession::new(vfs, &project_path)?; + let session = ServeSession::new(vfs, project_path)?; let mut cursor = session.message_queue().cursor(); let filter = if self.include_non_scripts { diff --git a/src/lib.rs b/src/lib.rs index 51195b6c1..190209509 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,7 @@ mod multimap; mod path_serializer; mod project; mod resolution; +mod rojo_ref; mod serve_session; mod session_id; mod snapshot; @@ -23,5 +24,6 @@ mod snapshot_middleware; mod web; pub use project::*; +pub use rojo_ref::*; pub use session_id::SessionId; pub use web::interface as web_api; diff --git a/src/main.rs b/src/main.rs index 5bb9bc6c2..4e0fb507f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use librojo::cli::Options; fn main() { #[cfg(feature = "profile-with-tracy")] - tracy_client::Client::start(); + profiling::tracy_client::Client::start(); panic::set_hook(Box::new(|panic_info| { // PanicInfo's payload is usually a &'static str or String. diff --git a/src/multimap.rs b/src/multimap.rs index 3a243af1a..9c399c24d 100644 --- a/src/multimap.rs +++ b/src/multimap.rs @@ -1,6 +1,6 @@ use std::{ borrow::Borrow, - collections::HashMap, + collections::{hash_map, HashMap}, fmt::{self, Debug}, hash::Hash, }; @@ -71,3 +71,33 @@ impl PartialEq for MultiMap { self.inner == other.inner } } + +impl Default for MultiMap { + fn default() -> Self { + Self { + inner: Default::default(), + } + } +} + +impl IntoIterator for MultiMap { + type IntoIter = MultiMapIntoIter; + type Item = (K, Vec); + fn into_iter(self) -> Self::IntoIter { + Self::IntoIter { + inner: self.inner.into_iter(), + } + } +} + +pub struct MultiMapIntoIter { + inner: hash_map::IntoIter>, +} + +impl Iterator for MultiMapIntoIter { + type Item = (K, Vec); + + fn next(&mut self) -> Option { + self.inner.next() + } +} diff --git a/src/project.rs b/src/project.rs index 1095fba20..b9573427f 100644 --- a/src/project.rs +++ b/src/project.rs @@ -1,14 +1,19 @@ use std::{ collections::{BTreeMap, HashMap, HashSet}, + ffi::OsStr, fs, io, net::IpAddr, path::{Path, PathBuf}, }; +use memofs::Vfs; use serde::{Deserialize, Serialize}; use thiserror::Error; -use crate::{glob::Glob, resolution::UnresolvedValue, snapshot::SyncRule}; +use crate::{ + glob::Glob, resolution::UnresolvedValue, snapshot::SyncRule, + snapshot_middleware::default_sync_rules, +}; static PROJECT_FILENAME: &str = "default.project.json"; @@ -19,6 +24,14 @@ pub struct ProjectError(#[from] Error); #[derive(Debug, Error)] enum Error { + #[error("The folder for the provided project cannot be used as a project name: {}\n\ + Consider setting the `name` field on this project.", .path.display())] + FolderNameInvalid { path: PathBuf }, + + #[error("The file name of the provided project cannot be used as a project name: {}.\n\ + Consider setting the `name` field on this project.", .path.display())] + ProjectNameInvalid { path: PathBuf }, + #[error(transparent)] Io { #[from] @@ -38,8 +51,11 @@ enum Error { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(deny_unknown_fields, rename_all = "camelCase")] pub struct Project { + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + schema: Option, + /// The name of the top-level instance described by the project. - pub name: String, + pub name: Option, /// The tree of instances described by this project. Projects always /// describe at least one instance. @@ -135,43 +151,97 @@ impl Project { } } - pub fn load_from_slice( + /// Sets the name of a project. The order it handles is as follows: + /// + /// - If the project is a `default.project.json`, uses the folder's name + /// - If a fallback is specified, uses that blindly + /// - Otherwise, loops through sync rules (including the default ones!) and + /// uses the name of the first one that matches and is a project file + fn set_file_name(&mut self, fallback: Option<&str>) -> Result<(), Error> { + let file_name = self + .file_location + .file_name() + .and_then(OsStr::to_str) + .ok_or_else(|| Error::ProjectNameInvalid { + path: self.file_location.clone(), + })?; + + // If you're editing this to be generic, make sure you also alter the + // snapshot middleware to support generic init paths. + if file_name == PROJECT_FILENAME { + let folder_name = self.folder_location().file_name().and_then(OsStr::to_str); + if let Some(folder_name) = folder_name { + self.name = Some(folder_name.to_string()); + } else { + return Err(Error::FolderNameInvalid { + path: self.file_location.clone(), + }); + } + } else if let Some(fallback) = fallback { + self.name = Some(fallback.to_string()); + } else { + // As of the time of writing (July 10, 2024) there is no way for + // this code path to be reachable. It can in theory be reached from + // both `load_fuzzy` and `load_exact` but in practice it's never + // invoked. + // If you're adding this codepath, make sure a test for it exists + // and that it handles sync rules appropriately. + todo!( + "set_file_name doesn't support loading project files that aren't default.project.json without a fallback provided" + ); + } + + Ok(()) + } + + /// Loads a Project file from the provided contents with its source set as + /// the provided location. + fn load_from_slice( contents: &[u8], - project_file_location: &Path, - ) -> Result { + project_file_location: PathBuf, + fallback_name: Option<&str>, + ) -> Result { let mut project: Self = serde_json::from_slice(contents).map_err(|source| Error::Json { source, - path: project_file_location.to_owned(), + path: project_file_location.clone(), })?; - - project.file_location = project_file_location.to_path_buf(); + project.file_location = project_file_location; project.check_compatibility(); + if project.name.is_none() { + project.set_file_name(fallback_name)?; + } + Ok(project) } - pub fn load_fuzzy(fuzzy_project_location: &Path) -> Result, ProjectError> { + /// Loads a Project from a path. This will find the project if it refers to + /// a `.project.json` file or if it refers to a directory that contains a + /// file named `default.project.json`. + pub fn load_fuzzy( + vfs: &Vfs, + fuzzy_project_location: &Path, + ) -> Result, ProjectError> { if let Some(project_path) = Self::locate(fuzzy_project_location) { - let project = Self::load_exact(&project_path)?; - - Ok(Some(project)) + let contents = vfs.read(&project_path).map_err(Error::from)?; + Ok(Some(Self::load_from_slice(&contents, project_path, None)?)) } else { Ok(None) } } - fn load_exact(project_file_location: &Path) -> Result { - let contents = fs::read_to_string(project_file_location)?; - - let mut project: Project = - serde_json::from_str(&contents).map_err(|source| Error::Json { - source, - path: project_file_location.to_owned(), - })?; - - project.file_location = project_file_location.to_path_buf(); - project.check_compatibility(); - - Ok(project) + /// Loads a Project from a path. + pub fn load_exact( + vfs: &Vfs, + project_file_location: &Path, + fallback_name: Option<&str>, + ) -> Result { + let project_path = project_file_location.to_path_buf(); + let contents = vfs.read(&project_path).map_err(Error::from)?; + Ok(Self::load_from_slice( + &contents, + project_path, + fallback_name, + )?) } /// Checks if there are any compatibility issues with this project file and @@ -226,6 +296,11 @@ pub struct ProjectNode { #[serde(rename = "$className", skip_serializing_if = "Option::is_none")] pub class_name: Option, + /// If set, defines an ID for the described Instance that can be used + /// to refer to it for the purpose of referent properties. + #[serde(rename = "$id", skip_serializing_if = "Option::is_none")] + pub id: Option, + /// Contains all of the children of the described instance. #[serde(flatten)] pub children: BTreeMap, diff --git a/src/resolution.rs b/src/resolution.rs index 9a0219eeb..7cba31c4e 100644 --- a/src/resolution.rs +++ b/src/resolution.rs @@ -8,6 +8,8 @@ use rbx_dom_weak::types::{ use rbx_reflection::{DataType, PropertyDescriptor}; use serde::{Deserialize, Serialize}; +use crate::REF_POINTER_ATTRIBUTE_PREFIX; + /// A user-friendly version of `Variant` that supports specifying ambiguous /// values. Ambiguous values need a reflection database to be resolved to a /// usable value. @@ -147,6 +149,10 @@ impl AmbiguousValue { Ok(value.into()) } + (VariantType::Ref, AmbiguousValue::String(_)) => Err(format_err!( + "Cannot resolve Ref properties as a String.\ + Use an attribute named `{REF_POINTER_ATTRIBUTE_PREFIX}{prop_name}" + )), (_, unresolved) => Err(format_err!( "Wrong type of value for property {}.{}. Expected {:?}, got {}", class_name, diff --git a/src/rojo_ref.rs b/src/rojo_ref.rs new file mode 100644 index 000000000..fbbf997e6 --- /dev/null +++ b/src/rojo_ref.rs @@ -0,0 +1,30 @@ +use std::{fmt, sync::Arc}; + +use serde::{Deserialize, Serialize}; + +pub const REF_ID_ATTRIBUTE_NAME: &str = "Rojo_Id"; +pub const REF_POINTER_ATTRIBUTE_PREFIX: &str = "Rojo_Target_"; + +// TODO add an internment strategy for RojoRefs +// Something like what rbx-dom does for SharedStrings probably works + +#[derive(Debug, Default, PartialEq, Hash, Clone, Serialize, Deserialize, Eq)] +pub struct RojoRef(Arc); + +impl RojoRef { + #[inline] + pub fn new(id: String) -> Self { + Self(Arc::from(id)) + } + + #[inline] + pub fn as_str(&self) -> &str { + self.0.as_str() + } +} + +impl fmt::Display for RojoRef { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.as_str()) + } +} diff --git a/src/serve_session.rs b/src/serve_session.rs index 85ae77934..ddb4dc21b 100644 --- a/src/serve_session.rs +++ b/src/serve_session.rs @@ -9,7 +9,6 @@ use std::{ }; use crossbeam_channel::Sender; -use memofs::IoResultExt; use memofs::Vfs; use thiserror::Error; @@ -110,12 +109,12 @@ impl ServeSession { log::debug!("Loading project file from {}", project_path.display()); - let root_project = match vfs.read(&project_path).with_not_found()? { - Some(contents) => Project::load_from_slice(&contents, &project_path)?, - None => { + let root_project = match Project::load_exact(&vfs, &project_path, None) { + Ok(project) => project, + Err(_) => { return Err(ServeSessionError::NoProjectFound { path: project_path.to_path_buf(), - }); + }) } }; @@ -190,7 +189,10 @@ impl ServeSession { } pub fn project_name(&self) -> &str { - &self.root_project.name + self.root_project + .name + .as_ref() + .expect("all top-level projects must have their name set") } pub fn project_port(&self) -> Option { diff --git a/src/snapshot/metadata.rs b/src/snapshot/metadata.rs index 1578af230..abe66df24 100644 --- a/src/snapshot/metadata.rs +++ b/src/snapshot/metadata.rs @@ -12,6 +12,7 @@ use crate::{ path_serializer, project::ProjectNode, snapshot_middleware::{emit_legacy_scripts_default, Middleware}, + RojoRef, }; /// Rojo-specific metadata that can be associated with an instance or a snapshot @@ -58,6 +59,9 @@ pub struct InstanceMetadata { /// that instance's instigating source is snapshotted directly, the same /// context will be passed into it. pub context: InstanceContext, + + /// Indicates the ID used for Ref properties pointing to this Instance. + pub specified_id: Option, } impl InstanceMetadata { @@ -67,6 +71,7 @@ impl InstanceMetadata { instigating_source: None, relevant_paths: Vec::new(), context: InstanceContext::default(), + specified_id: None, } } @@ -97,6 +102,13 @@ impl InstanceMetadata { ..self } } + + pub fn specified_id(self, id: Option) -> Self { + Self { + specified_id: id, + ..self + } + } } impl Default for InstanceMetadata { diff --git a/src/snapshot/patch_apply.rs b/src/snapshot/patch_apply.rs index 572b8455e..a390fc270 100644 --- a/src/snapshot/patch_apply.rs +++ b/src/snapshot/patch_apply.rs @@ -11,6 +11,7 @@ use super::{ patch::{AppliedPatchSet, AppliedPatchUpdate, PatchSet, PatchUpdate}, InstanceSnapshot, RojoTree, }; +use crate::{multimap::MultiMap, RojoRef, REF_ID_ATTRIBUTE_NAME, REF_POINTER_ATTRIBUTE_PREFIX}; /// Consumes the input `PatchSet`, applying all of its prescribed changes to the /// tree and returns an `AppliedPatchSet`, which can be used to keep another @@ -72,6 +73,11 @@ struct PatchApplyContext { /// to be rewritten. has_refs_to_rewrite: HashSet, + /// Tracks all ref properties that were specified using attributes. This has + /// to be handled after everything else is done just like normal referent + /// properties. + attribute_refs_to_rewrite: MultiMap, + /// The current applied patch result, describing changes made to the tree. applied_patch_set: AppliedPatchSet, } @@ -104,6 +110,22 @@ fn finalize_patch_application(context: PatchApplyContext, tree: &mut RojoTree) - } } + // This is to get around the fact that `RojoTre::get_specified_id` borrows + // the tree as immutable, but we need to hold a mutable reference to it. + // Not exactly elegant, but it does the job. + let mut real_rewrites = Vec::new(); + for (id, map) in context.attribute_refs_to_rewrite { + for (prop_name, prop_value) in map { + if let Some(target) = tree.get_specified_id(&RojoRef::new(prop_value)) { + real_rewrites.push((prop_name, Variant::Ref(target))) + } + } + let mut instance = tree + .get_instance_mut(id) + .expect("Invalid instance ID in deferred attribute ref map"); + instance.properties_mut().extend(real_rewrites.drain(..)); + } + context.applied_patch_set } @@ -142,6 +164,8 @@ fn apply_add_child( for child in children { apply_add_child(context, tree, id, child); } + + defer_ref_properties(tree, id, context); } fn apply_update_child(context: &mut PatchApplyContext, tree: &mut RojoTree, patch: PatchUpdate) { @@ -208,16 +232,78 @@ fn apply_update_child(context: &mut PatchApplyContext, tree: &mut RojoTree, patc applied_patch.changed_properties.insert(key, property_entry); } + defer_ref_properties(tree, patch.id, context); + context.applied_patch_set.updated.push(applied_patch) } +/// Calculates manually-specified Ref properties and marks them in the provided +/// `PatchApplyContext` to be rewritten at the end of the patch application +/// process. +/// +/// Currently, this only uses attributes but it can easily handle rewriting +/// referents in other ways too! +fn defer_ref_properties(tree: &mut RojoTree, id: Ref, context: &mut PatchApplyContext) { + let instance = tree + .get_instance(id) + .expect("Instances should exist when calculating deferred refs"); + let attributes = match instance.properties().get("Attributes") { + Some(Variant::Attributes(attrs)) => attrs, + _ => return, + }; + + let mut attr_id = None; + for (attr_name, attr_value) in attributes.iter() { + if attr_name == REF_ID_ATTRIBUTE_NAME { + if let Variant::String(specified_id) = attr_value { + attr_id = Some(RojoRef::new(specified_id.clone())); + } else if let Variant::BinaryString(specified_id) = attr_value { + if let Ok(str) = std::str::from_utf8(specified_id.as_ref()) { + attr_id = Some(RojoRef::new(str.to_string())) + } else { + log::error!("Specified IDs must be valid UTF-8 strings.") + } + } else { + log::warn!( + "Attribute {attr_name} is of type {:?} when it was \ + expected to be a String", + attr_value.ty() + ) + } + } + if let Some(prop_name) = attr_name.strip_prefix(REF_POINTER_ATTRIBUTE_PREFIX) { + if let Variant::String(prop_value) = attr_value { + context + .attribute_refs_to_rewrite + .insert(id, (prop_name.to_owned(), prop_value.clone())); + } else if let Variant::BinaryString(prop_value) = attr_value { + if let Ok(str) = std::str::from_utf8(prop_value.as_ref()) { + context + .attribute_refs_to_rewrite + .insert(id, (prop_name.to_owned(), str.to_string())); + } else { + log::error!("IDs specified by referent property attributes must be valid UTF-8 strings.") + } + } else { + log::warn!( + "Attribute {attr_name} is of type {:?} when it was \ + expected to be a String", + attr_value.ty() + ) + } + } + } + if let Some(specified_id) = attr_id { + tree.set_specified_id(id, specified_id); + } +} + #[cfg(test)] mod test { use super::*; use std::borrow::Cow; - use maplit::hashmap; use rbx_dom_weak::types::Variant; use super::super::PatchAdd; @@ -235,9 +321,7 @@ mod test { metadata: Default::default(), name: Cow::Borrowed("Foo"), class_name: Cow::Borrowed("Bar"), - properties: hashmap! { - "Baz".to_owned() => Variant::Int32(5), - }, + properties: [("Baz".to_owned(), Variant::Int32(5))].into(), children: Vec::new(), }; @@ -280,16 +364,15 @@ mod test { id: root_id, changed_name: Some("Foo".to_owned()), changed_class_name: Some("NewClassName".to_owned()), - changed_properties: hashmap! { + changed_properties: [ // The value of Foo has changed - "Foo".to_owned() => Some(Variant::Int32(8)), - + ("Foo".to_owned(), Some(Variant::Int32(8))), // Bar has been deleted - "Bar".to_owned() => None, - + ("Bar".to_owned(), None), // Baz has been added - "Baz".to_owned() => Some(Variant::Int32(10)), - }, + ("Baz".to_owned(), Some(Variant::Int32(10))), + ] + .into(), changed_metadata: None, }; @@ -300,11 +383,12 @@ mod test { apply_patch_set(&mut tree, patch_set); - let expected_properties = hashmap! { - "Foo".to_owned() => Variant::Int32(8), - "Baz".to_owned() => Variant::Int32(10), - "Unchanged".to_owned() => Variant::Int32(-5), - }; + let expected_properties = [ + ("Foo".to_owned(), Variant::Int32(8)), + ("Baz".to_owned(), Variant::Int32(10)), + ("Unchanged".to_owned(), Variant::Int32(-5)), + ] + .into(); let root_instance = tree.get_instance(root_id).unwrap(); assert_eq!(root_instance.name(), "Foo"); diff --git a/src/snapshot/patch_compute.rs b/src/snapshot/patch_compute.rs index 5d7abc698..cb3141768 100644 --- a/src/snapshot/patch_compute.rs +++ b/src/snapshot/patch_compute.rs @@ -8,6 +8,8 @@ use std::{ use rbx_dom_weak::types::{Ref, Variant}; +use crate::{RojoRef, REF_POINTER_ATTRIBUTE_PREFIX}; + use super::{ patch::{PatchAdd, PatchSet, PatchUpdate}, InstanceSnapshot, InstanceWithMeta, RojoTree, @@ -87,7 +89,7 @@ fn compute_patch_set_internal( .get_instance(id) .expect("Instance did not exist in tree"); - compute_property_patches(&mut snapshot, &instance, patch_set); + compute_property_patches(&mut snapshot, &instance, patch_set, tree); compute_children_patches(context, &mut snapshot, tree, id, patch_set); } @@ -95,10 +97,13 @@ fn compute_property_patches( snapshot: &mut InstanceSnapshot, instance: &InstanceWithMeta, patch_set: &mut PatchSet, + tree: &RojoTree, ) { let mut visited_properties = HashSet::new(); let mut changed_properties = HashMap::new(); + let attribute_ref_properties = compute_ref_properties(snapshot, tree); + let changed_name = if snapshot.name == instance.name() { None } else { @@ -140,6 +145,24 @@ fn compute_property_patches( changed_properties.insert(name.clone(), None); } + for (name, ref_value) in attribute_ref_properties { + match (&ref_value, instance.properties().get(&name)) { + (Some(referent), Some(instance_value)) => { + if referent != instance_value { + changed_properties.insert(name, ref_value); + } else { + changed_properties.remove(&name); + } + } + (Some(_), None) | (None, Some(_)) => { + changed_properties.insert(name, ref_value); + } + (None, None) => { + changed_properties.remove(&name); + } + } + } + if changed_properties.is_empty() && changed_name.is_none() && changed_class_name.is_none() @@ -224,14 +247,58 @@ fn compute_children_patches( } } +fn compute_ref_properties( + snapshot: &InstanceSnapshot, + tree: &RojoTree, +) -> HashMap> { + let mut map = HashMap::new(); + let attributes = match snapshot.properties.get("Attributes") { + Some(Variant::Attributes(attrs)) => attrs, + _ => return map, + }; + + for (attr_name, attr_value) in attributes.iter() { + let prop_name = match attr_name.strip_prefix(REF_POINTER_ATTRIBUTE_PREFIX) { + Some(str) => str, + None => continue, + }; + let rojo_ref = match attr_value { + Variant::String(str) => RojoRef::new(str.clone()), + Variant::BinaryString(bytes) => { + if let Ok(str) = std::str::from_utf8(bytes.as_ref()) { + RojoRef::new(str.to_string()) + } else { + log::warn!( + "IDs specified by referent property attributes must be valid UTF-8 strings" + ); + continue; + } + } + _ => { + log::warn!( + "Attribute {attr_name} is of type {:?} when it was \ + expected to be a String", + attr_value.ty() + ); + continue; + } + }; + if let Some(target_id) = tree.get_specified_id(&rojo_ref) { + map.insert(prop_name.to_string(), Some(Variant::Ref(target_id))); + } else { + map.insert(prop_name.to_string(), None); + } + } + + map +} + #[cfg(test)] mod test { use super::*; use std::borrow::Cow; - use maplit::hashmap; - /// This test makes sure that rewriting refs in instance update patches to /// instances that already exists works. We should be able to correlate the /// snapshot ID and instance ID during patch computation and replace the @@ -247,9 +314,7 @@ mod test { let snapshot_id = Ref::new(); let snapshot = InstanceSnapshot { snapshot_id: snapshot_id, - properties: hashmap! { - "Self".to_owned() => Variant::Ref(snapshot_id), - }, + properties: [("Self".to_owned(), Variant::Ref(snapshot_id))].into(), metadata: Default::default(), name: Cow::Borrowed("foo"), @@ -264,9 +329,7 @@ mod test { id: root_id, changed_name: None, changed_class_name: None, - changed_properties: hashmap! { - "Self".to_owned() => Some(Variant::Ref(root_id)), - }, + changed_properties: [("Self".to_owned(), Some(Variant::Ref(root_id)))].into(), changed_metadata: None, }], added_instances: Vec::new(), @@ -290,9 +353,7 @@ mod test { let snapshot = InstanceSnapshot { snapshot_id: snapshot_id, children: vec![InstanceSnapshot { - properties: hashmap! { - "Self".to_owned() => Variant::Ref(snapshot_id), - }, + properties: [("Self".to_owned(), Variant::Ref(snapshot_id))].into(), snapshot_id: Ref::none(), metadata: Default::default(), @@ -315,9 +376,7 @@ mod test { instance: InstanceSnapshot { snapshot_id: Ref::none(), metadata: Default::default(), - properties: hashmap! { - "Self".to_owned() => Variant::Ref(root_id), - }, + properties: [("Self".to_owned(), Variant::Ref(root_id))].into(), name: Cow::Borrowed("child"), class_name: Cow::Borrowed("child"), children: Vec::new(), diff --git a/src/snapshot/tests/apply.rs b/src/snapshot/tests/apply.rs index 96a365ac2..27b16904c 100644 --- a/src/snapshot/tests/apply.rs +++ b/src/snapshot/tests/apply.rs @@ -1,5 +1,4 @@ use insta::assert_yaml_snapshot; -use maplit::hashmap; use rojo_insta_ext::RedactionMap; @@ -47,9 +46,7 @@ fn add_property() { id: tree.get_root_id(), changed_name: None, changed_class_name: None, - changed_properties: hashmap! { - "Foo".to_owned() => Some("Value of Foo".into()), - }, + changed_properties: [("Foo".to_owned(), Some("Value of Foo".into()))].into(), changed_metadata: None, }], ..Default::default() @@ -88,9 +85,7 @@ fn remove_property() { id: tree.get_root_id(), changed_name: None, changed_class_name: None, - changed_properties: hashmap! { - "Foo".to_owned() => None, - }, + changed_properties: [("Foo".to_owned(), None).into()].into(), changed_metadata: None, }], ..Default::default() diff --git a/src/snapshot/tests/compute.rs b/src/snapshot/tests/compute.rs index fc6a0b636..ae1e2b4cc 100644 --- a/src/snapshot/tests/compute.rs +++ b/src/snapshot/tests/compute.rs @@ -1,7 +1,6 @@ use std::borrow::Cow; use insta::assert_yaml_snapshot; -use maplit::hashmap; use rbx_dom_weak::types::Ref; use rojo_insta_ext::RedactionMap; @@ -42,9 +41,7 @@ fn set_property() { metadata: Default::default(), name: Cow::Borrowed("ROOT"), class_name: Cow::Borrowed("ROOT"), - properties: hashmap! { - "PropertyName".to_owned() => "Hello, world!".into(), - }, + properties: [("PropertyName".into(), "Hello, world!".into())].into(), children: Vec::new(), }; diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap index 0d594dbc0..2f3852b55 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__add_property.snap @@ -13,5 +13,6 @@ metadata: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ children: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_after_patch.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_after_patch.snap index b6fcbbd08..31bdfecc9 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_after_patch.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_after_patch.snap @@ -11,5 +11,6 @@ metadata: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ children: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap index 84b3c3d1e..cafc3f5ed 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__remove_property_initial.snap @@ -13,5 +13,6 @@ metadata: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ children: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__set_name_and_class_name.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__set_name_and_class_name.snap index 325c86f3c..359ee86ec 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__set_name_and_class_name.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__apply__set_name_and_class_name.snap @@ -11,5 +11,6 @@ metadata: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ children: [] diff --git a/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__add_child.snap b/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__add_child.snap index 94ddf12fb..9147ca9b1 100644 --- a/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__add_child.snap +++ b/src/snapshot/tests/snapshots/librojo__snapshot__tests__compute__add_child.snap @@ -12,6 +12,7 @@ added_instances: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ name: New class_name: Folder properties: {} diff --git a/src/snapshot/tree.rs b/src/snapshot/tree.rs index e4379bc2d..8c30d5ef7 100644 --- a/src/snapshot/tree.rs +++ b/src/snapshot/tree.rs @@ -8,7 +8,7 @@ use rbx_dom_weak::{ Instance, InstanceBuilder, WeakDom, }; -use crate::multimap::MultiMap; +use crate::{multimap::MultiMap, RojoRef}; use super::{InstanceMetadata, InstanceSnapshot}; @@ -33,6 +33,12 @@ pub struct RojoTree { /// appearing multiple times in the same Rojo project. This is sometimes /// called "path aliasing" in various Rojo documentation. path_to_ids: MultiMap, + + /// A map of specified RojoRefs to underlying Refs they represent. + /// This field is a MultiMap to allow for the possibility of the user specifying + /// the same RojoRef for multiple different instances. An entry containing + /// multiple elements is an error condition that should be raised to the user. + specified_id_to_refs: MultiMap, } impl RojoTree { @@ -45,6 +51,7 @@ impl RojoTree { inner: WeakDom::new(root_builder), metadata_map: HashMap::new(), path_to_ids: MultiMap::new(), + specified_id_to_refs: MultiMap::new(), }; let root_ref = tree.inner.root_ref(); @@ -137,6 +144,20 @@ impl RojoTree { self.path_to_ids.insert(new_path.clone(), id); } } + if existing_metadata.specified_id != metadata.specified_id { + // We need to uphold the invariant that each ID can only map + // to one referent. + if let Some(new) = &metadata.specified_id { + if self.specified_id_to_refs.get(new).len() > 0 { + log::error!("Duplicate user-specified referent '{new}'"); + } + + self.specified_id_to_refs.insert(new.clone(), id); + } + if let Some(old) = &existing_metadata.specified_id { + self.specified_id_to_refs.remove(old, id); + } + } entry.insert(metadata); } @@ -161,11 +182,37 @@ impl RojoTree { self.metadata_map.get(&id) } + /// Get the backing Ref of the given RojoRef. If the RojoRef maps to exactly + /// one Ref, this method returns Some. Otherwise, it returns None. + pub fn get_specified_id(&self, specified: &RojoRef) -> Option { + match self.specified_id_to_refs.get(specified)[..] { + [referent] => Some(referent), + _ => None, + } + } + + pub fn set_specified_id(&mut self, id: Ref, specified: RojoRef) { + if let Some(metadata) = self.metadata_map.get_mut(&id) { + if let Some(old) = metadata.specified_id.replace(specified.clone()) { + self.specified_id_to_refs.remove(&old, id); + } + } + self.specified_id_to_refs.insert(specified, id); + } + fn insert_metadata(&mut self, id: Ref, metadata: InstanceMetadata) { for path in &metadata.relevant_paths { self.path_to_ids.insert(path.clone(), id); } + if let Some(specified_id) = &metadata.specified_id { + if self.specified_id_to_refs.get(specified_id).len() > 0 { + log::error!("Duplicate user-specified referent '{specified_id}'"); + } + + self.set_specified_id(id, specified_id.clone()); + } + self.metadata_map.insert(id, metadata); } @@ -174,6 +221,10 @@ impl RojoTree { fn remove_metadata(&mut self, id: Ref) { let metadata = self.metadata_map.remove(&id).unwrap(); + if let Some(specified) = metadata.specified_id { + self.specified_id_to_refs.remove(&specified, id); + } + for path in &metadata.relevant_paths { self.path_to_ids.remove(path, id); } @@ -297,3 +348,30 @@ impl InstanceWithMetaMut<'_> { self.metadata } } + +#[cfg(test)] +mod test { + use crate::{ + snapshot::{InstanceMetadata, InstanceSnapshot}, + RojoRef, + }; + + use super::RojoTree; + + #[test] + fn swap_duped_specified_ids() { + let custom_ref = RojoRef::new("MyCoolRef".into()); + let snapshot = InstanceSnapshot::new() + .metadata(InstanceMetadata::new().specified_id(Some(custom_ref.clone()))); + let mut tree = RojoTree::new(InstanceSnapshot::new()); + + let original = tree.insert_instance(tree.get_root_id(), snapshot.clone()); + assert_eq!(tree.get_specified_id(&custom_ref.clone()), Some(original)); + + let duped = tree.insert_instance(tree.get_root_id(), snapshot.clone()); + assert_eq!(tree.get_specified_id(&custom_ref.clone()), None); + + tree.remove(original); + assert_eq!(tree.get_specified_id(&custom_ref.clone()), Some(duped)); + } +} diff --git a/src/snapshot_middleware/csv.rs b/src/snapshot_middleware/csv.rs index 52e8ab0fd..6fefa5f23 100644 --- a/src/snapshot_middleware/csv.rs +++ b/src/snapshot_middleware/csv.rs @@ -1,7 +1,6 @@ use std::{collections::BTreeMap, path::Path}; use anyhow::Context; -use maplit::hashmap; use memofs::{IoResultExt, Vfs}; use serde::Serialize; @@ -31,9 +30,7 @@ pub fn snapshot_csv( let mut snapshot = InstanceSnapshot::new() .name(name) .class_name("LocalizationTable") - .properties(hashmap! { - "Contents".to_owned() => table_contents.into(), - }) + .properties([("Contents".to_owned(), table_contents.into())]) .metadata( InstanceMetadata::new() .instigating_source(path) diff --git a/src/snapshot_middleware/dir.rs b/src/snapshot_middleware/dir.rs index 092641e7f..a68674ebb 100644 --- a/src/snapshot_middleware/dir.rs +++ b/src/snapshot_middleware/dir.rs @@ -108,7 +108,6 @@ pub fn snapshot_dir_no_meta( mod test { use super::*; - use maplit::hashmap; use memofs::{InMemoryFs, VfsSnapshot}; #[test] @@ -132,9 +131,7 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "Child" => VfsSnapshot::empty_dir(), - }), + VfsSnapshot::dir([("Child", VfsSnapshot::empty_dir())]), ) .unwrap(); diff --git a/src/snapshot_middleware/json.rs b/src/snapshot_middleware/json.rs index 7594d96c2..3ec651111 100644 --- a/src/snapshot_middleware/json.rs +++ b/src/snapshot_middleware/json.rs @@ -1,7 +1,6 @@ use std::path::Path; use anyhow::Context; -use maplit::hashmap; use memofs::{IoResultExt, Vfs}; use crate::{ @@ -24,9 +23,7 @@ pub fn snapshot_json( let as_lua = json_to_lua(value).to_string(); - let properties = hashmap! { - "Source".to_owned() => as_lua.into(), - }; + let properties = [("Source".to_owned(), as_lua.into())]; let meta_path = path.with_file_name(format!("{}.meta.json", name)); diff --git a/src/snapshot_middleware/json_model.rs b/src/snapshot_middleware/json_model.rs index 93d566a2e..7cd5ae073 100644 --- a/src/snapshot_middleware/json_model.rs +++ b/src/snapshot_middleware/json_model.rs @@ -8,6 +8,7 @@ use serde::Deserialize; use crate::{ resolution::UnresolvedValue, snapshot::{InstanceContext, InstanceSnapshot}, + RojoRef, }; pub fn snapshot_json_model( @@ -41,6 +42,8 @@ pub fn snapshot_json_model( instance.name = Some(name.to_owned()); + let id = instance.id.take().map(RojoRef::new); + let mut snapshot = instance .into_snapshot() .with_context(|| format!("Could not load JSON model: {}", path.display()))?; @@ -49,7 +52,8 @@ pub fn snapshot_json_model( .metadata .instigating_source(path) .relevant_paths(vec![path.to_path_buf()]) - .context(context); + .context(context) + .specified_id(id); Ok(Some(snapshot)) } @@ -57,12 +61,18 @@ pub fn snapshot_json_model( #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] struct JsonModel { + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + schema: Option, + #[serde(alias = "Name")] name: Option, #[serde(alias = "ClassName")] class_name: String, + #[serde(skip_serializing_if = "Option::is_none")] + id: Option, + #[serde( alias = "Children", default = "Vec::new", diff --git a/src/snapshot_middleware/lua.rs b/src/snapshot_middleware/lua.rs index 3f8d26adf..c20cac867 100644 --- a/src/snapshot_middleware/lua.rs +++ b/src/snapshot_middleware/lua.rs @@ -116,7 +116,6 @@ pub fn snapshot_lua_init( mod test { use super::*; - use maplit::hashmap; use memofs::{InMemoryFs, VfsSnapshot}; #[test] @@ -263,9 +262,7 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/root", - VfsSnapshot::dir(hashmap! { - "init.lua" => VfsSnapshot::file("Hello!"), - }), + VfsSnapshot::dir([("init.lua", VfsSnapshot::file("Hello!"))]), ) .unwrap(); diff --git a/src/snapshot_middleware/meta_file.rs b/src/snapshot_middleware/meta_file.rs index 72930e49e..74b592726 100644 --- a/src/snapshot_middleware/meta_file.rs +++ b/src/snapshot_middleware/meta_file.rs @@ -4,7 +4,7 @@ use anyhow::{format_err, Context}; use rbx_dom_weak::types::Attributes; use serde::{Deserialize, Serialize}; -use crate::{resolution::UnresolvedValue, snapshot::InstanceSnapshot}; +use crate::{resolution::UnresolvedValue, snapshot::InstanceSnapshot, RojoRef}; /// Represents metadata in a sibling file with the same basename. /// @@ -13,6 +13,12 @@ use crate::{resolution::UnresolvedValue, snapshot::InstanceSnapshot}; #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AdjacentMetadata { + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + schema: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub ignore_unknown_instances: Option, @@ -72,9 +78,21 @@ impl AdjacentMetadata { Ok(()) } + fn apply_id(&mut self, snapshot: &mut InstanceSnapshot) -> anyhow::Result<()> { + if self.id.is_some() && snapshot.metadata.specified_id.is_some() { + anyhow::bail!( + "cannot specify an ID using {} (instance has an ID from somewhere else)", + self.path.display() + ); + } + snapshot.metadata.specified_id = self.id.take().map(RojoRef::new); + Ok(()) + } + pub fn apply_all(&mut self, snapshot: &mut InstanceSnapshot) -> anyhow::Result<()> { self.apply_ignore_unknown_instances(snapshot); self.apply_properties(snapshot)?; + self.apply_id(snapshot)?; Ok(()) } @@ -89,6 +107,12 @@ impl AdjacentMetadata { #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct DirectoryMetadata { + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + schema: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub ignore_unknown_instances: Option, @@ -122,6 +146,7 @@ impl DirectoryMetadata { self.apply_ignore_unknown_instances(snapshot); self.apply_class_name(snapshot)?; self.apply_properties(snapshot)?; + self.apply_id(snapshot)?; Ok(()) } @@ -174,4 +199,15 @@ impl DirectoryMetadata { Ok(()) } + + fn apply_id(&mut self, snapshot: &mut InstanceSnapshot) -> anyhow::Result<()> { + if self.id.is_some() && snapshot.metadata.specified_id.is_some() { + anyhow::bail!( + "cannot specify an ID using {} (instance has an ID from somewhere else)", + self.path.display() + ); + } + snapshot.metadata.specified_id = self.id.take().map(RojoRef::new); + Ok(()) + } } diff --git a/src/snapshot_middleware/mod.rs b/src/snapshot_middleware/mod.rs index 30ea57061..410d96ec9 100644 --- a/src/snapshot_middleware/mod.rs +++ b/src/snapshot_middleware/mod.rs @@ -63,10 +63,19 @@ pub fn snapshot_from_vfs( if meta.is_dir() { if let Some(init_path) = get_init_path(vfs, path)? { // TODO: support user-defined init paths + // If and when we do, make sure to go support it in + // `Project::set_file_name`, as right now it special-cases + // `default.project.json` as an `init` path. for rule in default_sync_rules() { if rule.matches(&init_path) { return match rule.middleware { - Middleware::Project => snapshot_project(context, vfs, &init_path), + Middleware::Project => { + let name = init_path + .parent() + .and_then(Path::file_name) + .and_then(|s| s.to_str()).expect("default.project.json should be inside a folder with a unicode name"); + snapshot_project(context, vfs, &init_path, name) + } Middleware::ModuleScript => { snapshot_lua_init(context, vfs, &init_path, ScriptType::Module) @@ -218,9 +227,7 @@ impl Middleware { Self::ServerScript => snapshot_lua(context, vfs, path, name, ScriptType::Server), Self::ClientScript => snapshot_lua(context, vfs, path, name, ScriptType::Client), Self::ModuleScript => snapshot_lua(context, vfs, path, name, ScriptType::Module), - // At the moment, snapshot_project does not use `name` so we - // don't provide it. - Self::Project => snapshot_project(context, vfs, path), + Self::Project => snapshot_project(context, vfs, path, name), Self::Rbxm => snapshot_rbxm(context, vfs, path, name), Self::Rbxmx => snapshot_rbxmx(context, vfs, path, name), Self::Toml => snapshot_toml(context, vfs, path, name), @@ -270,7 +277,7 @@ macro_rules! sync_rule { /// Defines the 'default' syncing rules that Rojo uses. /// These do not broadly overlap, but the order matters for some in the case of /// e.g. JSON models. -fn default_sync_rules() -> &'static [SyncRule] { +pub fn default_sync_rules() -> &'static [SyncRule] { static DEFAULT_SYNC_RULES: OnceLock> = OnceLock::new(); DEFAULT_SYNC_RULES.get_or_init(|| { @@ -280,8 +287,7 @@ fn default_sync_rules() -> &'static [SyncRule] { sync_rule!("*.client.lua", ClientScript, ".client.lua"), sync_rule!("*.client.luau", ClientScript, ".client.luau"), sync_rule!("*.{lua,luau}", ModuleScript), - // Project middleware doesn't use the file name. - sync_rule!("*.project.json", Project), + sync_rule!("*.project.json", Project, ".project.json"), sync_rule!("*.model.json", JsonModel, ".model.json"), sync_rule!("*.json", Json, ".json", "*.meta.json"), sync_rule!("*.toml", Toml), diff --git a/src/snapshot_middleware/project.rs b/src/snapshot_middleware/project.rs index c92f42d8a..037865426 100644 --- a/src/snapshot_middleware/project.rs +++ b/src/snapshot_middleware/project.rs @@ -11,6 +11,7 @@ use crate::{ InstanceContext, InstanceMetadata, InstanceSnapshot, InstigatingSource, PathIgnoreRule, SyncRule, }, + RojoRef, }; use super::{emit_legacy_scripts_default, snapshot_from_vfs}; @@ -19,9 +20,14 @@ pub fn snapshot_project( context: &InstanceContext, vfs: &Vfs, path: &Path, + name: &str, ) -> anyhow::Result> { - let project = Project::load_from_slice(&vfs.read(path)?, path) + let project = Project::load_exact(vfs, path, Some(name)) .with_context(|| format!("File was not a valid Rojo project: {}", path.display()))?; + let project_name = match project.name.as_deref() { + Some(name) => name, + None => panic!("Project is missing a name"), + }; let mut context = context.clone(); context.clear_sync_rules(); @@ -45,7 +51,7 @@ pub fn snapshot_project( .unwrap(), ); - match snapshot_project_node(&context, path, &project.name, &project.tree, vfs, None)? { + match snapshot_project_node(&context, path, project_name, &project.tree, vfs, None)? { Some(found_snapshot) => { let mut snapshot = found_snapshot; // Setting the instigating source to the project file path is a little @@ -277,6 +283,10 @@ pub fn snapshot_project_node( metadata.ignore_unknown_instances = true; } + if let Some(id) = &node.id { + metadata.specified_id = Some(RojoRef::new(id.clone())) + } + metadata.instigating_source = Some(InstigatingSource::ProjectNode( project_path.to_path_buf(), instance_name.to_string(), @@ -330,7 +340,6 @@ fn infer_class_name(name: &str, parent_class: Option<&str>) -> Option VfsSnapshot::file(r#" + VfsSnapshot::dir([( + "default.project.json", + VfsSnapshot::file( + r#" { "name": "indirect-project", "tree": { "$className": "Folder" } } - "#), - }), + "#, + ), + )]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); - let instance_snapshot = - snapshot_project(&InstanceContext::default(), &mut vfs, Path::new("/foo")) - .expect("snapshot error") - .expect("snapshot returned no instances"); + let instance_snapshot = snapshot_project( + &InstanceContext::default(), + &vfs, + Path::new("/foo"), + "NOT_IN_SNAPSHOT", + ) + .expect("snapshot error") + .expect("snapshot returned no instances"); insta::assert_yaml_snapshot!(instance_snapshot); } @@ -371,25 +387,29 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "hello.project.json" => VfsSnapshot::file(r#" + VfsSnapshot::dir([( + "hello.project.json", + VfsSnapshot::file( + r#" { "name": "direct-project", "tree": { "$className": "Model" } } - "#), - }), + "#, + ), + )]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo/hello.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -422,12 +442,13 @@ mod test { ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -458,12 +479,13 @@ mod test { ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -495,12 +517,13 @@ mod test { ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -515,26 +538,32 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "default.project.json" => VfsSnapshot::file(r#" + VfsSnapshot::dir([ + ( + "default.project.json", + VfsSnapshot::file( + r#" { "name": "path-project", "tree": { "$path": "other.txt" } } - "#), - "other.txt" => VfsSnapshot::file("Hello, world!"), - }), + "#, + ), + ), + ("other.txt", VfsSnapshot::file("Hello, world!")), + ]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo/default.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -549,33 +578,44 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "default.project.json" => VfsSnapshot::file(r#" + VfsSnapshot::dir([ + ( + "default.project.json", + VfsSnapshot::file( + r#" { "name": "path-project", "tree": { "$path": "other.project.json" } } - "#), - "other.project.json" => VfsSnapshot::file(r#" + "#, + ), + ), + ( + "other.project.json", + VfsSnapshot::file( + r#" { "name": "other-project", "tree": { "$className": "Model" } } - "#), - }), + "#, + ), + ), + ]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo/default.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -590,16 +630,24 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "default.project.json" => VfsSnapshot::file(r#" + VfsSnapshot::dir([ + ( + "default.project.json", + VfsSnapshot::file( + r#" { "name": "path-child-project", "tree": { "$path": "other.project.json" } } - "#), - "other.project.json" => VfsSnapshot::file(r#" + "#, + ), + ), + ( + "other.project.json", + VfsSnapshot::file( + r#" { "name": "other-project", "tree": { @@ -610,17 +658,20 @@ mod test { } } } - "#), - }), + "#, + ), + ), + ]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo/default.project.json"), + "NOT_IN_SNAPSHOT", ) .expect("snapshot error") .expect("snapshot returned no instances"); @@ -638,8 +689,11 @@ mod test { let mut imfs = InMemoryFs::new(); imfs.load_snapshot( "/foo", - VfsSnapshot::dir(hashmap! { - "default.project.json" => VfsSnapshot::file(r#" + VfsSnapshot::dir([ + ( + "default.project.json", + VfsSnapshot::file( + r#" { "name": "path-property-override", "tree": { @@ -649,8 +703,13 @@ mod test { } } } - "#), - "other.project.json" => VfsSnapshot::file(r#" + "#, + ), + ), + ( + "other.project.json", + VfsSnapshot::file( + r#" { "name": "other-project", "tree": { @@ -660,17 +719,56 @@ mod test { } } } - "#), - }), + "#, + ), + ), + ]), + ) + .unwrap(); + + let vfs = Vfs::new(imfs); + + let instance_snapshot = snapshot_project( + &InstanceContext::default(), + &vfs, + Path::new("/foo/default.project.json"), + "NOT_IN_SNAPSHOT", + ) + .expect("snapshot error") + .expect("snapshot returned no instances"); + + insta::assert_yaml_snapshot!(instance_snapshot); + } + + #[test] + fn no_name_project() { + let _ = env_logger::try_init(); + + let mut imfs = InMemoryFs::new(); + imfs.load_snapshot( + "/foo", + VfsSnapshot::dir([( + "default.project.json", + VfsSnapshot::file( + r#" + { + "tree": { + "$className": "Model" + } + } + "#, + ), + )]), ) .unwrap(); - let mut vfs = Vfs::new(imfs); + let vfs = Vfs::new(imfs); let instance_snapshot = snapshot_project( &InstanceContext::default(), - &mut vfs, + &vfs, Path::new("/foo/default.project.json"), + "no_name_project", ) .expect("snapshot error") .expect("snapshot returned no instances"); diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_from_vfs.snap index 50ce53c11..9b92ec7df 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: LocalizationTable properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_with_meta.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_with_meta.snap index c91924f8c..7c2d9f6c2 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_with_meta.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__csv__test__csv_with_meta.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: LocalizationTable properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__empty_folder.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__empty_folder.snap index 4c0dcbbf4..ab27bc679 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__empty_folder.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__empty_folder.snap @@ -19,6 +19,7 @@ metadata: - /foo/init.csv context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: Folder properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__folder_in_folder.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__folder_in_folder.snap index 6238fe68f..4a24bdb13 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__folder_in_folder.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__dir__test__folder_in_folder.snap @@ -19,6 +19,7 @@ metadata: - /foo/init.csv context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: Folder properties: {} @@ -40,6 +41,7 @@ children: - /foo/Child/init.csv context: emit_legacy_scripts: true + specified_id: ~ name: Child class_name: Folder properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json__test__instance_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json__test__instance_from_vfs.snap index 9cc320ebb..b41503ad1 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json__test__instance_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json__test__instance_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs.snap index e3ee581e0..c6c307057 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs.snap @@ -11,6 +11,7 @@ metadata: - /foo.model.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: IntValue properties: @@ -23,6 +24,7 @@ children: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ name: The Child class_name: StringValue properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs_legacy.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs_legacy.snap index e3ee581e0..c6c307057 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs_legacy.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__json_model__test__model_from_vfs_legacy.snap @@ -11,6 +11,7 @@ metadata: - /foo.model.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: IntValue properties: @@ -23,6 +24,7 @@ children: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ name: The Child class_name: StringValue properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_client_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_client_from_vfs.snap index 5f5f6e9a1..92321572b 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_client_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_client_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: LocalScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_from_vfs.snap index de2471b9a..53c7ee33b 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_with_meta.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_with_meta.snap index 32d70c708..1b7fde092 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_with_meta.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_module_with_meta.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_disabled.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_disabled.snap index 2c5546a53..d0038e4d0 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_disabled.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_disabled.snap @@ -12,6 +12,7 @@ metadata: - /bar.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: bar class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_with_meta.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_with_meta.snap index e4e31ff96..a5f532402 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_with_meta.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_script_with_meta.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_server_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_server_from_vfs.snap index b70b9cc2b..4ad99cf1a 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_server_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__class_server_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_client_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_client_from_vfs.snap index 6ad72d084..e9704b1cf 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_client_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_client_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: foo class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_from_vfs.snap index 83be811be..6f5909c44 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_with_meta.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_with_meta.snap index 98a88ec7f..ff8c51ecc 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_with_meta.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_module_with_meta.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_disabled.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_disabled.snap index c47b83dc3..c74043637 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_disabled.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_disabled.snap @@ -12,6 +12,7 @@ metadata: - /bar.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: bar class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_with_meta.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_with_meta.snap index 72d24206f..512c39911 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_with_meta.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_script_with_meta.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: foo class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_server_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_server_from_vfs.snap index 2b902f964..4295f6bab 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_server_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__lua__test__runcontext_server_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: false + specified_id: ~ name: foo class_name: Script properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__no_name_project.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__no_name_project.snap new file mode 100644 index 000000000..7c1978cae --- /dev/null +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__no_name_project.snap @@ -0,0 +1,18 @@ +--- +source: src/snapshot_middleware/project.rs +expression: instance_snapshot +--- +snapshot_id: "00000000000000000000000000000000" +metadata: + ignore_unknown_instances: true + instigating_source: + Path: /foo/default.project.json + relevant_paths: + - /foo/default.project.json + context: + emit_legacy_scripts: true + specified_id: ~ +name: foo +class_name: Model +properties: {} +children: [] diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_from_direct_file.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_from_direct_file.snap index bd5db23db..7906dbbf4 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_from_direct_file.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_from_direct_file.snap @@ -11,6 +11,7 @@ metadata: - /foo/hello.project.json context: emit_legacy_scripts: true + specified_id: ~ name: direct-project class_name: Model properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_path_property_overrides.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_path_property_overrides.snap index 77cb44c96..51da06217 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_path_property_overrides.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_path_property_overrides.snap @@ -12,6 +12,7 @@ metadata: - /foo/default.project.json context: emit_legacy_scripts: true + specified_id: ~ name: path-property-override class_name: StringValue properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_children.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_children.snap index 914a2f95e..0c9f90abd 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_children.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_children.snap @@ -11,6 +11,7 @@ metadata: - /foo.project.json context: emit_legacy_scripts: true + specified_id: ~ name: children class_name: Folder properties: {} @@ -27,6 +28,7 @@ children: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ name: Child class_name: Model properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project.snap index 02e6ee0ba..d8d59d908 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project.snap @@ -12,6 +12,7 @@ metadata: - /foo/default.project.json context: emit_legacy_scripts: true + specified_id: ~ name: path-project class_name: Model properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project_with_children.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project_with_children.snap index baf643653..30b01ebb1 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project_with_children.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_project_with_children.snap @@ -12,6 +12,7 @@ metadata: - /foo/default.project.json context: emit_legacy_scripts: true + specified_id: ~ name: path-child-project class_name: Folder properties: {} @@ -28,6 +29,7 @@ children: relevant_paths: [] context: emit_legacy_scripts: true + specified_id: ~ name: SomeChild class_name: Model properties: {} diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_txt.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_txt.snap index 223c366cd..e723e6d22 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_txt.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_path_to_txt.snap @@ -13,6 +13,7 @@ metadata: - /foo/default.project.json context: emit_legacy_scripts: true + specified_id: ~ name: path-project class_name: StringValue properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_resolved_properties.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_resolved_properties.snap index eddb4e040..99c6b3b5c 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_resolved_properties.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_resolved_properties.snap @@ -11,6 +11,7 @@ metadata: - /foo.project.json context: emit_legacy_scripts: true + specified_id: ~ name: resolved-properties class_name: StringValue properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_unresolved_properties.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_unresolved_properties.snap index 8bd6e28b8..f42e22467 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_unresolved_properties.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__project__test__project_with_unresolved_properties.snap @@ -11,6 +11,7 @@ metadata: - /foo.project.json context: emit_legacy_scripts: true + specified_id: ~ name: unresolved-properties class_name: StringValue properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__toml__test__instance_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__toml__test__instance_from_vfs.snap index 329bdbcd3..71a141530 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__toml__test__instance_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__toml__test__instance_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: ModuleScript properties: diff --git a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__txt__test__instance_from_vfs.snap b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__txt__test__instance_from_vfs.snap index aa3e0f067..54253eb12 100644 --- a/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__txt__test__instance_from_vfs.snap +++ b/src/snapshot_middleware/snapshots/librojo__snapshot_middleware__txt__test__instance_from_vfs.snap @@ -12,6 +12,7 @@ metadata: - /foo.meta.json context: emit_legacy_scripts: true + specified_id: ~ name: foo class_name: StringValue properties: diff --git a/src/snapshot_middleware/toml.rs b/src/snapshot_middleware/toml.rs index 086c539d5..a219d7e75 100644 --- a/src/snapshot_middleware/toml.rs +++ b/src/snapshot_middleware/toml.rs @@ -1,7 +1,6 @@ use std::path::Path; use anyhow::Context; -use maplit::hashmap; use memofs::{IoResultExt, Vfs}; use crate::{ @@ -24,9 +23,7 @@ pub fn snapshot_toml( let as_lua = toml_to_lua(value).to_string(); - let properties = hashmap! { - "Source".to_owned() => as_lua.into(), - }; + let properties = [("Source".to_owned(), as_lua.into())]; let meta_path = path.with_file_name(format!("{}.meta.json", name)); diff --git a/src/snapshot_middleware/txt.rs b/src/snapshot_middleware/txt.rs index a69b14d1b..9076f160e 100644 --- a/src/snapshot_middleware/txt.rs +++ b/src/snapshot_middleware/txt.rs @@ -1,6 +1,5 @@ use std::{path::Path, str}; -use maplit::hashmap; use memofs::{IoResultExt, Vfs}; use crate::snapshot::{InstanceContext, InstanceMetadata, InstanceSnapshot}; @@ -16,9 +15,7 @@ pub fn snapshot_txt( let contents = vfs.read_to_string(path)?; let contents_str = contents.as_str(); - let properties = hashmap! { - "Value".to_owned() => contents_str.into(), - }; + let properties = [("Value".to_owned(), contents_str.into())]; let meta_path = path.with_file_name(format!("{}.meta.json", name)); diff --git a/src/web/assets.rs b/src/web/assets.rs index 37adbe137..39f0958b0 100644 --- a/src/web/assets.rs +++ b/src/web/assets.rs @@ -29,13 +29,13 @@ macro_rules! declare_asset { declare_asset!(css, "../../assets/index.css"); pub fn logo() -> &'static [u8] { - static LOGO: &[u8] = include_bytes!("../../assets/logo-512.png"); + static LOGO: &[u8] = include_bytes!("../../assets/brand_images/logo-512.png"); LOGO } pub fn icon() -> &'static [u8] { - static ICON: &[u8] = include_bytes!("../../assets/icon-32.png"); + static ICON: &[u8] = include_bytes!("../../assets/brand_images/icon-32.png"); ICON } diff --git a/src/web/ui.rs b/src/web/ui.rs index 0199d58d7..a7d64ce4e 100644 --- a/src/web/ui.rs +++ b/src/web/ui.rs @@ -7,7 +7,6 @@ use std::{borrow::Cow, sync::Arc, time::Duration}; use hyper::{header, Body, Method, Request, Response, StatusCode}; -use maplit::hashmap; use rbx_dom_weak::types::{Ref, Variant}; use ritz::{html, Fragment, HtmlContent, HtmlSelfClosingTag}; @@ -163,6 +162,7 @@ impl UiService { let content = html! { <> +
"specified_id: " { format!("{:?}", metadata.specified_id) }
"ignore_unknown_instances: " { metadata.ignore_unknown_instances.to_string() }
"instigating source: " { format!("{:?}", metadata.instigating_source) }
{ relevant_paths } @@ -192,7 +192,7 @@ impl UiService { html! {
-