gelic-idealab / komodo-unity

Unity VR client for the Komodo XR platform
5 stars 3 forks source link

v0.5.0: Mandatory Height Calibration Prompt, Compatibility with Relay Server v1.1.0, Enhanced People Panel, Various Refactors #80

Closed Barasakar closed 2 years ago

Barasakar commented 3 years ago

Mandatory Height Calibration Prompt

Created a prototype of the height calibration prompt that asks users to calibrate their height.

Having the height calibration done early might help addressing one of the issues (i.e., teleporting into the ground).

Work around for #61 .

Type of change

How Has This Been Tested?

Komodo runs -> prompt shows up -> calibrate height -> prompt disappears This is not a multi-player feature.

Test Configuration:

Checklist:

Modified from this article: Phillip Johnston, “A GitHub Pull Request Template for Your Projects - Embedded Artistry,” Embedded Artistry, Aug. 04, 2017. https://embeddedartistry.com/blog/2017/08/04/a-github-pull-request-template-for-your-projects/ (accessed Jul. 22, 2021).

parseccentric commented 3 years ago

Compatibility with Relay Server v1.1.0, Enhanced People Panel, Various Refactors

Connect to sync namespace (breaking change)

The client is now compatible with komodo-relay (server) v1.1.0, which requires a connection to the sync namespace.

How to test: open the Unity client in a browser and connect to a v1.1.0 server -> the people tab should report a successful connection.

Support for v1.1.0 should theoretically fix #59

Fix state catch-up to use messaging system (bug fix, new feature)

The state catch-up had a bug where it would always ask the ClientSpawnManager to apply state, so networked objects (synchronized models) would not get transform, visibility, or lock states. This is now fixed.

How to test: go to Unity window > Hierarchy panel > Visible managers > NetworkManager. See Inspector panel > SocketIOEditorSimulator component, right click it, and choose ReceiveExampleStateCatchup. ->The models should all be lined up in a diagonal line, be spaced evenly, and up to four of them should be visible and locked. (Fewer will be visible and locked if some are marked as "isWholeObject = false" in ModelData. This is a limitation of the test.)

Lock and visibility toggle infinite loop (bug fix)

It should no longer be possible to trigger an infinite loop by rapidly pressing the lock and visibility toggle.

How to test: open two clients and rapidly press the visibility or lock button, then let go -> the button should quickly stop flashing on and off.

Max client count (new feature)

The maximum number of clients has arbitrarily been increased to 15.

Improved People tab

Fixes #60

Major networking refactors

Refactors

SessionStateManager has been introduced to apply multiplayer server state catch-ups to the avatars (clients) and networked objects (synchronized models).

A new class, NetworkedObjectsManager, has been introduced to manage synchronized models.

Adding and removing clients was refactored into smaller functions in an attempt to repair the out-of-body experience.

The client teardown code was moved from NetworkUpdateHandler to SocketIOAdapter for the same reason.

Minor renamings.

Type of change

How Has This Been Tested?

Please see above for the manual test instructions.

Test Configuration:

Checklist:

Modified from this article: Phillip Johnston, “A GitHub Pull Request Template for Your Projects - Embedded Artistry,” Embedded Artistry, Aug. 04, 2017. https://embeddedartistry.com/blog/2017/08/04/a-github-pull-request-template-for-your-projects/ (accessed Jul. 22, 2021).

parseccentric commented 3 years ago

@Barasakar Could you review this when you have a chance?

Barasakar commented 3 years ago

@parseccentric Yeah, I have reviewed this whole thread. Let me know if there is anything else I need to do.

parseccentric commented 2 years ago

@Barasakar I made another mistake. As you can see above, I mistakenly committed 508b74d and 18651ff onto this branch before merging. I apologize for this error. I will close this pull request and open a new one with a temp branch that reflects the state of the pull request.