Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

AR Input Handling and Various Improvements #7010

Merged
merged 1 commit into from
Sep 26, 2022
Merged

Conversation

HexaField
Copy link
Member

Summary

A summary of changes being made in this PR

References

closes #insert number here

Checklist

  • If this PR is still a WIP, convert to a draft
  • ensure all checks pass
  • When this PR is ready, mark it as "Ready for review"
  • Changes have been manually QA'd
  • Changes reviewed by at least 2 approved reviewer

QA Steps

List any additional steps required to QA the changes of this PR, as well as any supplemental images or videos.

@HexaField HexaField merged commit 8593784 into dev Sep 26, 2022
@HexaField HexaField deleted the ar-world-scale-pick branch September 26, 2022 11:06
patreeceeo referenced this pull request in MappaLabs/MappaXRE Dec 9, 2022
* improve logging with system initialization

* Fix debug view update on every frame

If we want to optimize the debug view, we have to make more of our state reactive.

* optimize debug tool & improve statsjs

* improve hmd detection, force disable post pro and shadows on hmd

* Fix debug view

* cleanup

* disable point lights in HMDs

* fix bug with avatar ui system

* ar input handling and various improvements (#7010)

* fix ecs test

* fix button assignment

* AR Lightprobe and Refactor (#7011)

* implement AR lightprobe and refactor stuff

* fix tests

* Combine EntityTree and EntityTreeFunctions into unified file (#7013)

* fix layout starting off visible

* Layout Refactor (#7017)

* refactor layout

* finish implementing refactor

* loading improvements

* fix test erroring

* Avatar Loading Refactor (#7018)

* fix: import error (#7016)

* Move server config from client-core to common. (#6988)

* Move server config from client-core to common.

* Do not send /log requests if server host not defined.

Co-authored-by: HexaField <joshfield999@gmail.com>

* Rename to ServerLogger. (#6957)

* Rename to ServerLogger.

* fix other imports

* format

Co-authored-by: HexaField <joshfield999@gmail.com>

* Wallet enhancements, remove client-side signing. (#6986)

Co-authored-by: HexaField <joshfield999@gmail.com>

* update vite (#6916)

* update vite

* cleanup optimize persist plugin

* fix index.html

* disable creds stuff

Co-authored-by: Hanzla Mateen <hanzlamateen@live.com>

* implement router service (#7019)

* WebXR Depth Occlusion (#7029)

* WebXR Depth Occlusion MVP Implementation

* combine system and functions, fix outdated api

* fix uniform problems

* fix shader plugin problems, fix typings

* fix input sources bug

* Fixed vite extensions not working for project api (#7030)

* Fix for rebuild button on local minikube

* Replace default avatars, fix admin page react package import

* 8thwall Support (#7032)

* initial implementation adds camera rendering along with engine rendering

* api key env config

* add webxr emulator and get positioning to work with emulated device

* remove webxr proxy, implement hit test

* fix boolean error

* camera and rendering works

* refactor implementation to be data oriented

* fix touchpad not showing

* Updated mocha to version 10.0.0 (#7031)

* AR World Scaling (#7008)

* add ar touch input and begin implementing world scaling

* all entities have local transform

* bug fixes

* fix gizmo bug, add docs to set transform functions

* fix add object command

* move entity tree interfaces into common file with entity tree functions

* fix more tests

* fix test

* fix network object spawn offset bug

* revert change to always set local transform component

* camera stuff

* world origin stuff

* Fix world scaling

* Update index.html

* import

* Implement scene placement mode

* fixes

* fix editor camera transform bugs

* add placement mode button and swipe rotation

* format

* system refactor

* disable depth occlusion canvas

* button margins

* add scene placement opacity

* rename entity, docs, button styling

* cleanup log

Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>

* Subsystems have metadata and debugger properly displays them (#7035)

* Subsystems have metadata and debugger properly displays them

* cleanup

* Fixed a few misplaced --build-arg's

* Update README.md

* Update README.md

* Material io (#7012)

* organize gltf resources into model-resources
* handle exporting images in model saving
* add "find" method to file-browser service
* add model resource handling to clear resources before export
* parameterize model resource path for later changes
* Material Library Panel now displays Material Sources
* add geometry inspector
* make repeat wrapping default for AssetLoader textures
* implement vertex baking of diffuse and lightMap
* fix EEMaterial gltf-transform extension
* make material library panel legible

* Model Editor Improvements

* add batch delete in Model Transform Properties
* more aggressive quantization in Model Transform
* fix material library not deleting model source
* add delete button to attributes in Geometry Editor (#7043)

* fix entities not being deleted on dynamic unload (#7042)

* enable logarithmic depth buffer by default to remove z-fighting (#7041)

* XRAnchors & Better Scene Scaling (#7036)

* initial anchors implementation

* anchor cleanup

* fix bugs

* better 8thwall hit test support

* fix bug with camera scale

* remove unnecessary dirty add

* reenable check

* dollhouse mode uses varying distance

* starting placement minifies other UI

* add loading screen to XR session initialization

* Prevent page pinch-zoom on iOS

* Add temporary remote.js script for remote inspection on deployment

* fixed particle system not working (#7045)

* Fix 8w prompt css

* Prevent body from scrolling

* Fix isMobile, and ensure no heavy materials used on mobile or hmd

* Revert "Add temporary remote.js script for remote inspection on deployment"

This reverts commit 26e33b6.

* 8thwall camera permission handling (#7047)

* Invert expensive material check

* Improve material downgrades

* Update SceneObjectSystem.ts

* add setVisibleComponent helper function

* add check if component exists in removeComponent before passing onRemove

* update roadmap

* Scale down resolution in screen-space XR sessions

* Simplify materials when running 8th wall

* Ensure canvas is hidden in immersive dom overlay

* Prevent effect composer from running when there is an xr session

* Fix canvas visibility when entering and leaving sessions

* Revert canvas visibility changes

Not needed

* fix ar canvas display and improve hit test anchor logic

* Rename Network User Service (#7053)

* fix logging in instance-provision find

* Added VITE_LOCAL_NGINX env_var for running locally behind nginx.

* Update GroupComponent.ts

Add TransformComponent if missing in addObjectToGroup

* Scene Metadata Refactor (#7049)

* refactor post processing, render settings and media settings

* tsc errors

* fix node editors

* revert subscribable in hyperflux

* i18n for scene node settings

* fog settings

* fix fog shader issues

* improve post processinghandling and fix immersive media

* add todo for deprecation notice to camera properties component

* fix import

* update default scenes

* fix world saving

* update default scenes

* fix test

* use post processing correctly in scene screenshot

* Room Codes (#7044)

* Initial changes to support room

* Misc fixes

* Linked room service with menu and instance server

* Fixed reference

* Fixed typo

* Updated room code as per new approach

* add room code to instance provision interface

* fix tsc errors, revert adding userId field

* fix editor provision action

* fix err

Co-authored-by: HexaField <joshfield999@gmail.com>

* Fixed errors

* Cleanup world scaling math

- switching between lifesize / dollhouse scale was being triggered by the wrong distance calculation
- dollhouse scale math shrinks exponentially from 20% to 1%, between 0.6 meters to 0.01 meters from the hit test plane

* Fix XRUI rotation

* fix csm shadows (#7059)

* fix model offset when saving changes

* Update clientInputListeners.ts

Only prevent default if active element isn't input or textarea.

This makes the editor inputs work better.

* Fixed crashing issue in analytics

* Fix DirectionLightNodeEditor csm input

* Csm refactor (#7060)

* refactor csm

* fix shadow system running on server

* fix errors

* fixes

Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>

* Fix xr anchor updates

* Update WebGLRendererSystem.ts

* Fix avatar head in VR

* run analytics on local dev

* add enable button for post processing in editor

* Fixed server mode for analytics from Instance to Analytics

* Added feather-sync to analytics. Updated analytics helm charts with redis for feathers sync.

* Enabled redis pipe for feathers sync in analytics server

* Sort interactables based on camera distance

* Update index.tsx

Remove code that prevents rendering on HMD

* Enable user menu in XR mode

* WebXR Controllers ECS Implementation (#7058)

* start refactoring webxr controllers implementation

* continue

* controller targets

* retargeting works

* refactor some systems

* IK Networking Works

* cursor

* xrui pointer improvements

* Fix hand IK targets

* Add wrist rotation

* fixes

Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>

* Xr8 fixes (#7065)

* add some xr8 proxies

* fix anchors

* cleanup

* fix tests

* disable avatar teleport system temporarily

* fix xr8

* gltf metadta loads boolean strings as booleans

* material library touchup

* Fixed bugs in instanceserver provisioning.

Added "createNewRoom" query param to force new instanceserver creation, so that locations that
are not using room codes don't send every user to a separate server.

Fixed return data on existing IS server return.

* add createRoomCode to instance connection services

* cleanup logs

* add scss inline import typings

* disable mesh.removeFromParent() in createRigidBodyForGroup

* Viewer Pose Input Source (#7067)

* implement viewer pose input source

* revert xrui change

* implement viewer input source in 8thwall

* duplicate input source entities bug fix

* fix some bugs with instance provisioning

* fix avatar head IK

* * fix hierarchy panel search bar
* move search bar and object explode toggle into hierarchy panel

* Hierarchy panel cleanup (#7068)

* material library touchup
* fix hierarchy panel search bar
* move search bar and object explode toggle into hierarchy panel

* * fix broken hierarchy panel state
* search bar now works for object3Ds when explode objects enabled

* update set-ip script

* v1.0.0-rc4

* fix bad path resolution on deployment

* fix bugs with instance disconnection, make webxr controllers data oriented & catch light estimator (#7072)

* Asset cleanup (#7073)

* delete old and unused assets
* compress avatar animations
* remove ocean assets
* fix dot.png
* move collision cube into default_assets
* lower default envmap bake resolution
* delete ocean component default images
* fix material overrides in editor
* lower envmap upload resolution
* remove material overrides
* remove materialParms

* Delete setup_ip.sh

* IK Targets Refactor (#7074)

* refactor ik targets

* fix merge error

* format

* fix tests

* add nested git repo detection to vscode settings.json

* add nested git repos to vscode search functionality settings.json

* improve get hand pose

* Increase frame buffer scale factor on Quest

Strangely, WebXR sessions on the Quest report an interaction mode of 'screen-space', which is surely a browser bug ('screen-space' interaction mode is appropriate for tablets, not HMDs...)

* Fixed a few bugs.

checkRoom now gets instances that are locations, so that accidental inputs of channel roomCodes don't
attempt to provision it as a world server.

project.find had a bug with getting allowedProjects re: projects that don't have repositoryPaths.

* set defaults for envMap component to none

* give ee_material priority in loading materials in GLTFLoader.js

* Performance optimizations

* Add avatar head lock option

* fix bug with instanceId user patching

* add catch to requestHitTestSource

* Add loading messages to the loading circle (#7075)

* Add loading messages to the loading circle

* improve styling

* fix portals in VR

* simultaneous VR and AR buttons

* include VITE_FILE_SERVER in deployment (#7081)

* remove log

* fix teleport system and remove deprecated XRInputSourceComponent

* * fix losing vertex colors on change material prototype
* vertex bake now bakes to MeshBasicMaterial

* Fixed typo in build_minikube.sh

* Update loadGLTFModel.test.ts

Move addEntityNodeChild before adding ModelComponent

* Vite file server fixup (#7084)

* Update value of VITE_FILE_SERVER in templates

* Another change

* run engine on all servers

* fix regression in input handling

* Avatar IK Controller Improvements (#7089)

* fix bug with teleport movement scheme

* fix admin route

* fix unallowed admin route

* USDZ Support (#7078)

* implement basic usdz support (zipped usda only, very limited material support)
* fix fbx and usdz models not registering materials
* replace string model sources with SourceType enums

* merge in recent updates to three GLTFLoader and GLTFExporter

* exclude hmd from mobile (#7080)

Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>

* save rotations as quaternions instead of eulers

* * remove unused loaders
* improve model transform
* update DDSLoader and FBXLoader

* * fix Asset Component
* fix NodeDracoLoader
* update Transform Component tests

* Avatar teleport works on both controllers

* fix bug with movement

* tweak teleport logic

* add animations to avatar teleport

* remove old todo, fix bug with transform functions

* expose projects and hyperflux to global

* fix gltf loader crashing server

* fix offline location import

* WebXR Haptics - Controller Vibration (#7091)

* Correctly label "Save Scene" dialog in editor

* fix bug with controller input, small optimizations in xrui system

* check that roomcode is correct on instance server connection (#7093)

Co-authored-by: Hanzla Mateen <hanzlamateen@live.com>

* Hyperflux Local Storage (#7096)

* refactor local storage user to be entirely hookstate driven

* refactor query params

* fix tests

* disable client test

* fix tests

* Disable Fullscreen on iOS (#7098)

* disable fullscreen on ios

* disable icon

* Split Avatar Movement (#7101)

* remove logging

* Audio gain nodes have correct values upon initialization

* Optimize System Loading for Vite Chunking (#7104)

* optimize system loading for vite chunking

* fix tsc errors

* optimize model asset fetching (#7105)

* improve teleport controls sensitivity

* Fixed a bug with patching instanceservers as admin. (#7108)

As part of initializeInstance, the instanceserver was trying to get
the user joining the server, but when done via an admin patching an
instanceserver, there is no associated user. Replaced calling the
feathers channel.find, which requires an identity-provider,
with just calling findOne on the channel model.

* fix state updates not always persisting to localStorage

* set vscode editor tab size to 2

* Added better handling of OAuth login cancellation. (#7102)

For most OAuth providers, if the user canceled the initial authorization, we were not
handling it properly and creating dummy identity-providers, thus logging them in.
Added/updated authenticate overrides to look for errors on the returned data and
throw appropriate errors.

* Added support for serving client files from Cloudfront/S3. (#7110)

Vite now uses a base path of `https://${process.env.STORAGE_CLOUDFRONT_DOMAIN}/client/`
if new variable SERVE_CLIENT_FROM_STORAGE_PROVIDER is true, STORAGE_PROVIDER is 'aws',
and STORAGE_CLOUDFRONT_DOMAIN is set. This will make all files except the root HTML be
pulled from Cloudfront, which should be faster than from the client servers.

Changed compression algorithm from gzip to brotli, since it generally results in smaller
files and is about as equally well-supported.

Added new script to rename and push the client files to S3 during the build process.
Serving from the client server was using expresss-static-gzip to return the compressed
files as their non-compressed extension types, e.g. example.js.gz being fetched from
a call to example.js, but Cloudfront/S3 will not do that substitution. The script
will push each file that ends in `.js.br` as `.js`, with a Content-Encoding header of 'br'
to indicate it is already compressed. This only runs if SERVE_CLIENT_FROM_STORAGE_PROVIDER
is set to true and STORAGE_PROVIDER is set to 'aws'.

If SERVE_CLIENT_FROM_STORAGE_PROVIDER is set to true and STORAGE_PROVIDER is set to 'aws',
run_builder.sh now locally generates a list of existing client files from S3 that have a
vite hash on them before building anything, pushes the built static files to S3 in the
client Docker build process, and deletes the list of now-old existing static files
from S3 five minutes after the builder process finishes. This ensures that the 3 bucket
does not endlessly increase in size with each build.

Added support for ContentEncoding and Metadata parameters to s3.storage.ts.

* Added support for project versioning, better project updating. (#7046)

Projects' package.json's should now include a section `etherealEngine`, which
contains the `version` of the engine that it is known to be compatible with.
The name field is now the definitive name of the project - the name of the
repository that the project is in is not used for any naming purposes.
The version in here is also displayed, and tags are used for retrieving
specific commits.

Replaced Update and Reset functionality with a single drawer. This drawer lets
user select a destination repository, as well as a source repository/branch/tagged
commit (the latest commit is also selectable). The API checks that the source and
destination are accessible by the user, and that the user has push permissions for
the latter. It also checks that the destination is either empty, or contains a
project whose name matches the source project's name.

A warning is displayed if the source project's engine version does not match
the deployment's project version, but it is always accepted. Update now always
sends `reset: true` to project.update, so whatever is in the
<deployment>-deployment branch in the destination is overwritten.

Updated builder update to a) allow for choosing which commit in the builder's repo
to use when doing the update and b) select projects to update in the new builder
update drawer.

* Revert "Added support for project versioning, better project updating. (#7046)" (#7111)

This reverts commit 8961fa4.

* Added cloudfront region to AWS settings and storage provider. (#7116)

Made Cloudfront settings editable in admin settings sub-page.

* Fixed bug in pruning old S3 client files. (#7117)

Vite sometimes generates the same hash for a built file as the prior run. These files were getting deleted
at the end of the build process because they were being recorded before the client build as files that
existed and should be deleted, leading to missing files at the end of the process.

Made get-deletable-client-files.ts store the list of files to be pruned stored in S3. push-client-to-s3.ts
now reads in the list from S3 and removes files whose names are the same as the just-built client files,
then pushes that back to S3. delete-old-s3-files.ts gets the list from S3.

* AR Placement Mode (#7113)

* get widget ui working again

* start implementing anchor widget

* implement immersive AR placement mode

* leaving the world network removes the roomcode and instanceid in the url params

* Fixed chat issues (#7112)

Co-authored-by: Josh Field <joshfield999@gmail.com>

* Fix relative worker imports having CORS errors when using s3/cloudfront (#7121)

* cleanup console logs

* Added scaling to colliders, mesh collider stability improvements, initial collectable prefab integration

* AR Placement Widget Refactor

* Bump volumetric package to 1.0.5

* New Project API System Convention (#7122)

* Optimize Vite Code Splitting (#7123)

* implement basic camera settings

* Fix FullscreenContainer

When loading on iOS, the FullscreenContainer was not including child components in the render tree.

* Disable fullscreen button on iOS

Boolean was inverted.

* Add k8s active pod logging page in admin panel (#7076)

* Initial changes for server info

* Introduced state in server info service.

* Added table for pods

* Removed temp section

* Added auto refresh functionality

* Added server info refresh functionality

* Fixed table scrolls

* Added server logs

* Added server scope

* Added support for project versioning, better project updating. (#7125)

Projects' package.json's should now include a section `etherealEngine`, which
contains the `version` of the engine that it is known to be compatible with.
The name field is now the definitive name of the project - the name of the
repository that the project is in is not used for any naming purposes.
The version in here is also displayed, and tags are used for retrieving
specific commits.

Replaced Update and Reset functionality with a single drawer. This drawer lets
user select a destination repository, as well as a source repository/branch/tagged
commit (the latest commit is also selectable). The API checks that the source and
destination are accessible by the user, and that the user has push permissions for
the latter. It also checks that the destination is either empty, or contains a
project whose name matches the source project's name.

A warning is displayed if the source project's engine version does not match
the deployment's project version, but it is always accepted. Update now always
sends `reset: true` to project.update, so whatever is in the
<deployment>-deployment branch in the destination is overwritten.

Updated builder update to a) allow for choosing which commit in the builder's repo
to use when doing the update and b) select projects to update in the new builder
update drawer.

* fix bug with leaveNetwork

* Fix for builder tag

* Another builder tag fix.

* Another builder tag fix.

* increase curvature of teleport controls

* add some more cyberbot avatars

* AR anchor widget disabled in VR

* fix bug with scene loading

* default to auto mode to dollhouse

* update default project engine version

* Add Teleport Fade to Black (#7130)

* Add count property to instance server patching (#7128)

* add types to patch server, add a count argument

* fix incorrect hookstate

Co-authored-by: Hanzla Mateen <hanzlamateen@live.com>

* Remove extraneous console logs

* Removed extraneous logs

* add local storage dist mode, fix worker stuff

* Replaced instances of the overlay with ethereal engine. (#7129)

Co-authored-by: hanzlamateen <hanzlamatee@live.com>

* Fixed several avatar-related bugs (#7132)

Spawning of avatar now uses avatar object on user object. Client had previously
been using fetchAvatarList and pulling the matching avatar off that, which was
prone to failure if it was not on the first page. Instanceserver now gets user
via feathers instead of sequelize model so that avatar is attached to user, and
does not have to do a separate fetch of user's avatar.

Made project.update not ru onInstall hook if the project already exists in the database.
This was causing avatars to be duplicated.

Updated fetchAvatarList to paginate. Updated avatar selection menus to paginate themselves
by their page length and to make calls to fetchAvatarList when they need to get more from
the API.

* Fixed several bugs in project versioning. (#7131)

project.find no longer errors out if any individual project fetch from Github
fails. The returned error is caught and placed into an array of errors.
This array is returned alongside the valid data, to be displayed to the requesting
user.

project.find's call to getRepo was not removing the `.git` from the repository name,
which was resulting in invalid calls. It now is.

Failing to get a project's package.json is now caught and ignored. The information
that is expected to be retrieved is just not returned.

Added GitHub scopes to authentication seed. These are necessary for full access to
repos for projects.

Removed a redundant fetch of projects on admin projects page.

Added a button in ProjectFields.tsx to copy the destinationURL to the sourceURL.

Reject project sources that lack an xrengine.config,ts

* Made generate thumbnail and envmap optional in save scene. (#7133)

* Added 8th wall in admin panel client settings (#7107)

* Added 8th wall in admin panel client settings

* Moved is dev to config

* Fixed typo in script

* Moved config to structured client object

* Moved env usages in client to config

* Setting 8th wall key in client configs

* Fixed errors

* Reverted githubapp-helper

Co-authored-by: Hanzla Mateen <hanzlamatee@live.com>

* Fix Face API Worker & Improve Client Dist Handling (#7134)

* more worker fixes

* refactor gltf loader out of global scope

* make isDev it's own export

* update isDev imports

* fix tests

* Added script to bump versions of default-project and template-project. (#7136)

* Fixed issues with project version bumping.

* [Navigation] Add features for supporting plugins and remove old code (#2)

* wip: navigation support

* cleanup: remove vector2 input component

* cleanup: remove noisey logging

* Add mapInput fn

* cleanup

* remove old navigation stuff

* More project bump fixes. (#7138)

* fix incorrect publicPath, optimize unnecssary await in MediaSystem

* Fix local project seeding (#7139)

* make prettier happy

* remove test script from template project

* fix default follow camera theta to orient camera behind avatar

* fix emote menu

* v1.0.0-rc5 (#7143)

Co-authored-by: CI Bot <ci-bot@xrengine.io>

* remove unused optimizeDeps.json file

* Remove deprecated imports

* Fix: merge mistakes and omissions (#4)

fix: add changes I forgot to add earlier

Co-authored-by: AidanCaruso <102248647+AidanCaruso@users.noreply.github.com>

* Temp fix for errors when userdata is undefined

* Fix imported collider meshes not scaling

Co-authored-by: HexaField <joshfield999@gmail.com>
Co-authored-by: Gheric Speiginer <gheric.speiginer@gmail.com>
Co-authored-by: Patrick Canfield <578371+patreeceeo@users.noreply.github.com>
Co-authored-by: Dmitri Zagidulin <dzagidulin@gmail.com>
Co-authored-by: Hanzla Mateen <hanzlamateen@live.com>
Co-authored-by: Kyle Baran <kbaran@bitscoop.com>
Co-authored-by: Liam Broza <mrhegemon@users.noreply.github.com>
Co-authored-by: dinomut1 <94419856+dinomut1@users.noreply.github.com>
Co-authored-by: dinomut1 <heximhotep@gmail.com>
Co-authored-by: CI Bot <ci-bot@xrengine.io>
Co-authored-by: hanzlamateen <hanzlamatee@live.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant