Rojo enables Roblox developers to use professional-grade software engineering tools https://rojo.space
Find a file
Kenneth Loeffler 9d0b313261
Add ChangeBatcher to plugin for two-way sync (#478)
* Implement ChangeBatcher

* Use ChangeBatcher for two-way sync

* Pause updates during patch application

* I can English good

* Break after encountering a nil Parent change

This prevents __flush from erroring out when an instance's Parent is
changed to nil and it has other property changes in the same batch.

* Update rbx_dom_lua

* Don't connect changed listeners in a running game

 #468 made me realize how bad of an idea this is in general...

* Update TestEZ and fix sibling Ref reification test

* Add ChangeBatcher tests

* Test instance unpausing by breaking functionality out to __cycle

* Break up the module a bit and improve tests

* Shuffle requires around and edit comment

* Break out more stuff, rename createChangePatch -> createPatchSet

* Make ChangeBatcher responsible for unpausing all paused instances

This somewhat improves the situation (of course, it would preferrable
to not have to hack around this problem with Source at all). It also
sets us up nicely if we come across any other properties that do
anything similar.

* Remove old reference to pausedBatchInstances

* Use RenderStepped instead of Heartbeat and trash multi-frame pauses

I probably should have done this in the first place...

ChangeBatcher still needs to unpause instances, but we don't need to
hold pauses for any longer than one cycle.

* Remove useless branch

* if not next(x) -> if next(x) == nil

* Add InstanceMap:unpauseAllInstances, use it in ChangeBatcher

* Move IsRunning check to InstanceMap:__maybeFireInstanceChanged
2021-10-18 18:18:51 -04:00
.cargo Use new Cargo config.toml convention 2021-07-12 13:19:36 -04:00
.github/workflows Upgrade to Tokio 1.x, futures 0.3, Hyper 0.14, etc (#459) 2021-07-28 12:29:46 -04:00
assets Add images from plugin rewrite 2020-12-14 11:20:07 -08:00
benches Flatten snapshot middleware to be much simpler (#324) 2020-06-17 13:47:09 -07:00
bin Move .luacheckrc for better editor detection 2019-10-02 10:42:10 -07:00
build/windows Support long file paths on Windows (past 256 limit) (#464) 2021-08-23 15:21:01 -04:00
memofs Update memofs to 0.2.0 2021-08-23 16:00:51 -04:00
plugin Add ChangeBatcher to plugin for two-way sync (#478) 2021-10-18 18:18:51 -04:00
rojo-insta-ext Write tests and ensure adding instances works 2019-10-17 13:46:59 -07:00
rojo-test Upgrade dependencies 2021-10-11 17:40:14 -04:00
src Move entrypoint from src/bin.rs to src/main.rs 2021-09-14 20:42:38 -04:00
test-projects Add test project for #458 2021-07-27 12:42:47 -04:00
tests Fix deprecation warning by writing better code 2021-06-14 12:50:54 -04:00
.editorconfig Fix Insta snapshot files having their line endings truncated when edited 2019-11-25 18:10:39 -08:00
.gitignore Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
.gitmodules New UI (#367) 2020-12-14 11:07:39 -08:00
.luacheckrc Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00
build.rs Support long file paths on Windows (past 256 limit) (#464) 2021-08-23 15:21:01 -04:00
Cargo.lock Upgrade dependencies in lockfile 2021-10-15 13:24:40 -04:00
Cargo.toml Upgrade dependencies 2021-10-11 17:40:14 -04:00
CHANGELOG.md Release v7.0.0-rc.1 2021-08-23 15:50:28 -04:00
CONTRIBUTING.md Update contributing guide 2021-08-23 16:11:56 -04:00
foreman.toml Upgrade Rojo to 6.1.0 (lol) 2021-05-14 15:09:19 -04:00
LICENSE.txt Tweak bottom of README, move LICENSE to LICENSE.txt 2019-01-18 20:57:19 -08:00
README.md Upgrade to Tokio 1.x, futures 0.3, Hyper 0.14, etc (#459) 2021-07-28 12:29:46 -04:00
selene.toml Break apart plugin reconciler (#332) 2020-11-11 16:30:23 -08:00

Rojo
 
Actions status Latest server version Rojo Documentation

Rojo is a tool designed to enable Roblox developers to use professional-grade software engineering tools.

With Rojo, it's possible to use industry-leading tools like Visual Studio Code and Git.

Rojo is designed for power users who want to use the best tools available for building games, libraries, and plugins.

Features

Rojo enables:

  • Working on scripts and models from the filesystem, in your favorite editor
  • Versioning your game, library, or plugin using Git or another VCS
  • Streaming rbxmx and rbxm models into your game in real time
  • Packaging and deploying your project to Roblox.com from the command line

In the future, Rojo will be able to:

  • Sync instances from Roblox Studio to the filesystem
  • Automatically convert your existing game to work with Rojo
  • Import custom instances like MoonScript code

Documentation

Documentation is hosted in the rojo.space repository.

Contributing

Check out our contribution guide for detailed instructions for helping work on Rojo!

Pull requests are welcome!

Rojo supports Rust 1.46.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 for details.