Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Save to endpoint #4

Open
Utopiah opened this issue Nov 8, 2023 · 4 comments
Open

Save to endpoint #4

Utopiah opened this issue Nov 8, 2023 · 4 comments

Comments

@Utopiah
Copy link

Utopiah commented Nov 8, 2023

As demonstrated few years ago it was then possible to :

  1. export the HTML,
  2. send it to a backend, e.g Express on Glitch with a /save route, that would
  3. save it in a specific directory with a timestamped filename (to avoid overwriting) and
  4. made it available, then finally
  5. optionally redirect to it.

This was quite convenient because one could open a scene, modify it endlessly and instantly make the change available to everybody else. This was great for introductory workshops with adults and kids alike because participants can spend a long time adjusting positions for their assets.

As discussions related to it shown some things changed, e.g removing the HTML exporting by providing a solution better suited to seasoned developers who already know Node.

I believe the inspector, or now editor, can be a great level editor, namely when the basis is already running (working components providing unique features or game mechanics) being able to have the assets positioned properly, possibly even delegating that to non developers.

As this might not be the typical use case maybe a dedicated component would be more appropriate, e.g saving-endpoint="https://aframe-editor-saving-endpoint-example.glitch.me/save" that would replace the behavior of the "Write changes with aframe-watcher." icon.

@Utopiah
Copy link
Author

Utopiah commented Nov 8, 2023

Seems writeChanges() could be a place to start from. It does not send the HTML proper though, only a data structure AFRAME.INSPECTOR.history.updates that must still be interpreted by the watcher. It also includes limitations that are problematic in the context of a level editor, e.g unable to add new entities.

@Utopiah
Copy link
Author

Utopiah commented Nov 8, 2023

Note that there still seems to be interest supermedium/aframe-watcher#9

@Utopiah
Copy link
Author

Utopiah commented Nov 8, 2023

Related older discussion aframevr#184

@vincentfretin
Copy link
Member

With the undo implementation in #6 all actions that do a change in the editor are commands, we could probably use the undo history instead of the watcher history I disabled in #8 to save only the changes. The copy a-scene HTML to clipboard done in #7 is better than what we have in the inspector but has some issue in networked-aframe projects I commented there.

We could also easily do a collaborative editing sending changes via websocket. But we need to implement the commands serialization in json like threejs editor commands. I didn't implement it for simplicity when I did the undo implementation inspired by the implementation in the threejs editor.

Also note that with the undo implementation in #6 all entities have now a 21 characters id, although I don't show it or html export it in #7, but I will export it in a future json format.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants