Fixes issue where when translating the selected object(s), user view was obstructed by grabber handles. This also brings more consistency to the selection ui state between rotation and translation user interactions. Both types of interactions feel nicer with the selection ui as concise as possible during the action, limited only to that useful for the current interaction. Expected Behavior: Note the following presumes you're in creation mode. * When the selection is clicked, the rotation, stretch, clone, and translateY handles should turn invisible. * When moving a selection along either the x or z axis, the rotation, stretch, clone, and translateY handles should be invisible and remain that way until the user releases the selection. * When the selection is released, the rotation, stretch, clone, and translateY handles should become visible. * When the translateY handle is clicked, the rotation, stretch, and clone handles should turn invisible. The translateY handle should remain visible. * When moving the selection along the y axis, the rotation, stretch, and clone handles should be invisible and remain that way until the user releases the selection. The translateY handle should be visible during the entire interaction. * When the selection is released, the rotation, stretch, clone should become visible. The translateY handle, visible the entire time, should already be visible. * When the user click somewhere other than a selection, entity object, creation menu or tools, then any current selection should be unselected and all creation ui local to it should turn invisible. * When the user exits creation mode, any current selection should be unselected and all creation ui local to it should turn invisible. TODO: * We may want to visit the scaling interaction ui as well; however, that could be a later task as it's tangential. The changes here are a good first step. * The idea with that interaction is perhaps only showing the handle for the current scaling operation. Currently when scaling all of the other handles remain visible, though their appearance does update. Reviewed-by: Leander Hasty <leander@1stplayable.com> Changes Committed: modified: scripts/system/libraries/entitySelectionTool.js |
||
---|---|---|
android | ||
assignment-client | ||
cmake | ||
domain-server | ||
gvr-interface | ||
ice-server | ||
interface | ||
libraries | ||
plugins | ||
script-archive | ||
scripts | ||
server-console | ||
tests | ||
tools | ||
unpublishedScripts | ||
.editorconfig | ||
.eslintrc.js | ||
.gitattributes | ||
.gitignore | ||
BUILD.md | ||
BUILD_ANDROID.md | ||
BUILD_LINUX.md | ||
BUILD_OSX.md | ||
BUILD_WIN.md | ||
CMakeGraphvizOptions.cmake | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
INSTALL.md | ||
LICENSE | ||
README.md |
High Fidelity (hifi) is an early-stage technology lab experimenting with Virtual Worlds and VR.
In this repository you'll find the source to many of the components in our alpha-stage virtual world. The project embraces distributed development and if you'd like to help, we'll pay you -- find out more at Worklist.net. If you find a small bug and have a fix, pull requests are welcome. If you'd like to get paid for your work, make sure you report the bug via a job on Worklist.net.
We're hiring! We're looking for skilled developers; send your resume to hiring@highfidelity.com
Chat with us
Come chat with us in our Gitter if you have any questions or just want to say hi!
Documentation
Documentation is available at docs.highfidelity.com, if something is missing, please suggest it via a new job on Worklist (add to the hifi-docs project).
There is also detailed documentation on our coding standards.
Build Instructions
All information required to build is found in the build guide.
Running Interface
When you launch interface, you will automatically connect to our default domain: "root.highfidelity.io".
If you don't see anything, make sure your preferences are pointing to root.highfidelity.io (set your domain via Cmnd+D/Cntrl+D), if you still have no luck it's possible our servers are simply down; if you're experiencing a major bug, let us know by adding an issue to this repository. Make sure to include details about your computer and how to reproduce the bug.
To move around in-world, use the arrow keys (and Shift + up/down to fly up or down) or W A S D, and E or C to fly up/down. All of the other possible options and features are available via menus in the Interface application.
Running your own servers
The assignment-client and domain-server are architectural components that will allow you to run the full stack of the virtual world.
In order to set up your own virtual world, you need to set up and run your own local "domain".
The domain-server gives a number different types of assignments to the assignment-client for different features: audio, avatars, voxels, particles, meta-voxels and models.
Follow the instructions in the build guide to build the various components.
From the domain-server build directory, launch a domain-server.
./domain-server
Then, run an assignment-client. The assignment-client uses localhost as its assignment-server and talks to it on port 40102 (the default domain-server port).
In a new Terminal window, run:
./assignment-client
Any target can be terminated with Ctrl-C (SIGINT) in the associated Terminal window.
This assignment-client will grab one assignment from the domain-server. You can tell the assignment-client what type you want it to be with the -t
option. You can also run an assignment-client that forks off n assignment-clients with the -n
option. The -min
and -max
options allow you to set a range of required assignment-clients, this allows you to have flexibility in the number of assignment-clients that are running. See --help
for more options.
./assignment-client --min 6 --max 20
To test things out you'll want to run the Interface client.
To access your local domain in Interface, open your Preferences -- on OS X this is available in the Interface menu, on Linux you'll find it in the File menu. Enter "localhost" in the "Domain server" field.
If everything worked you should see that you are connected to at least one server. Nice work!