Commit Graph

351 Commits

Author SHA1 Message Date
Luke Bermingham 50e8a23b9c
Merge pull request #115 from EpicGames/UE5.2
Bring 5.2 changes back to master
2023-02-22 18:50:17 +10:00
Luke Bermingham e794f12f85
Update README.md
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-22 18:49:11 +10:00
Luke Bermingham c465d4643e Fix bug in gh-release action now that we are building UI library too. Bump version to 0.2.1. 2023-02-22 18:11:39 +10:00
Luke Bermingham 38311c3bc2 Bump ui-library version number for patch to 0.0.2 2023-02-22 17:58:25 +10:00
Luke Bermingham c994d9f2f9 Bump package-lock.json library dep to 0.1.0 2023-02-22 17:57:20 +10:00
Luke Bermingham bcc7ac4abc Bump dep version of library 0.1.0 in ui-library 2023-02-22 17:54:22 +10:00
Luke Bermingham 59826328ba
Merge pull request #113 from EpicGames/master
Update 5.2 from master
2023-02-22 17:38:51 +10:00
hmuurine 781667247f
Decouple UI from the frontend library (#110)
This PR splits the Frontend/library code into two parts:

1) /library - that provides an API for establishing Pixel Streaming sessions
2) /ui-library - that contains all the UI components like settings overlay panel, connection strength indicator, buttons, etc.
The library code is intended to be used as a library through the Javascript/Typescript API, and it can be used programmatically without the default UI implemented in ui-library. This allows the developers to bring their own UI if they wish to customize the user experience, or even start a Pixel Streaming session without any overlay UI.

The wish is to keep the library API stable and try to not make breaking changes if possible. If new non-breaking features are introduced to the API, it would be great if it was reflected in the version numbering following semantic versioning. Breaking changes should increase the major version number, while non-breaking changes increase only the minor or patch version number.

* add jss dependencies to UI project

* move PixelStreamingApplicationStyles to the UI project

* remove jss dependencies from library project

* add pixel streaming lib as ui dependency

* renamed lib Application -> PixelStreaming

* expose AFK callbacks from API

* expose callbacks for overlays

* onDismissAfk function added

* fix possible NPE in statistics panel (Firefox only)

* build both library projects in setup.sh|.bat

* extracted overlays from PixelStreaming library to UI

* bind callbacks to have access to `this`

* emit onStatsReceived callback

* replaced on\* callbacks with a typed event emitter

* reuse types in on() and emit()

* fix web-xr on Firefox (no navigator.xr available)

* latency test API and callback events

* move stats panel to UI project

* move settings panel to UI project

* extract video quality indicator to UI project

* move buttons to UI project

* events for freezeFrame functionality

* import UI project in stresstest.ts

* move UI wrapper elements to UI project

* optional override for videoParentElement

* created uiless.html and uiless.ts, which together are a sample UI application with no overlay UI

* let -> const everywhere in sample applications

* used named imports everywhere, not import * as libfrontend

* document overrides

* added onOpen, onClose, onError handlers for data channels

* events for webRtc data channel open, close, error

* added missing javadocs for classes and functions

* renamed webRtcDisconnect -> webRtcDisconnected

* added disconnect function to the API

* use EventTarget to emit events

* emit streamerListMessage, move new streamer select overlay to UI side

* Emit config change events

* API for changing settings

* add getSettings() for symmetry

* set partial initial settings in Config constructor

* configure initial params in uiless.ts to auto start muted

* add missing type exports

* extracted config UI from the config components

* configurable parameter saving to URL

* save config params to URL only on demand

* removed console.log

* removed unused import

* Extract light/dark mode config out of Pixel Streaming library

* update labels for custom settings

* Build the new library in setup scripts

* added a fallback click-to-play handler into uiless.ts

* hide non-public attributes in Config

* make the public API more compact by hiding private attributes

* added documentation for the public functions

* underscored some methods in Config

* make useUrlParameters read-only

* underscore for Config event listeners: public API users use settingsChanged events

* underscore for Config event listeners

* fix imports: @epicgames-ps/lib-pixelstreamingfrontend-ue5.2, not -dev

* added a comment to request function API docs: expected to be changed later

* reorganized directory structure

* ui-library build now uses NPM dependency, build-all linked filesystem dependency

* added ui-library build to GH release

* added github workflow for ui-library publishing

* Link base library when building ui-library

* Bring dispatchEvent, addEventListener and removeEventListener to the top level PixelStreaming class, simplifying API usage

* Allow settings to take a default onChange listener. This listener has two params of the new value as well as the calling settings, allowing you to modify the underlying settings members in this callback

* Fix overlay to properly notify is none or multiple streamers are connected

* Make dark mode the default color scheme regardless of browser preference.

* Make numeric settings spinner width take us less space.

* Make SettingUIOption match styling width of numeric settings.

* renamed EpicGames build-all-dev -> build-dev-all to match other projects

* added Click to play overlay in uiless.html and show/hide it when needed

* revised documentation for Config/*.ts

* revised documentation in PixelStreaming.ts

* documented EventEmitter events and event parameters

* emit webRtcConnected event when connected

* Fix max bitrate not being set correctly.

* Update package-lock.json for ui-library

* Refactor sendEncoderSettings to instead be sendEncoderMinQP and sendEncoderMaxQP

* Bump version numbers of library NPM package to 0.1.0 and bump 5.2 release to 0.2.0 as all changes here a non-breaking as far as we have tested.

---------

Co-authored-by: William Belcher <william.belcher@xa.epicgames.com>
Co-authored-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-22 17:12:12 +10:00
Luke Bermingham b0fb0643ad
Fix: Pass command line args to setup when calling run_local.bat (#109) 2023-02-20 16:02:52 +10:00
Luke Bermingham 359b804005 Fix: Pass command line args to setup when calling run_local.bat 2023-02-20 16:01:33 +10:00
Luke Bermingham 6f271db226
Merge pull request #108 from EpicGames/UE5.2
Update github action for making a release
2023-02-20 14:46:57 +10:00
Luke Bermingham 556d1cb505
Update RELEASE_VERSION
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:24:21 +10:00
Luke Bermingham 5832a441c2
Update create-gh-release.yml
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:24:02 +10:00
Luke Bermingham a059a5f734
Update RELEASE_VERSION
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:12:11 +10:00
Luke Bermingham 86c0036e43
Update create-gh-release.yml
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:11:51 +10:00
Luke Bermingham d094d8fc06
Mod version to trigger release
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:05:41 +10:00
Luke Bermingham 9576084e1f
Remove leading quote typo
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:05:13 +10:00
Luke Bermingham d08ba1d58e
Bump version to test GH release action
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:01:08 +10:00
Luke Bermingham eec331b1ab
Update release action to make archive subdir
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 14:00:22 +10:00
Luke Bermingham 789c715510
Update RELEASE_VERSION
Testing release workflow

Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 13:45:24 +10:00
Luke Bermingham f1d192d318
Create subdirectory when making release archive
Archive contents should start with a directory that is `PixelStreamingInfrastructure-Branch-Version`

Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 13:44:45 +10:00
Luke Bermingham 894e695fda
Roll back release until archives are created properly
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 13:28:35 +10:00
Luke Bermingham 4219326e60
Merge pull request #107 from EpicGames/master
Merge changes from master
2023-02-20 13:07:03 +10:00
Luke Bermingham a366404100
Merge branch 'UE5.2' into master
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-20 13:03:48 +10:00
William Belcher 673a2607f1
neaten up install scripts (#106) 2023-02-20 12:47:09 +10:00
Luke Bermingham 259068d329
Update README.md
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-17 18:31:00 +10:00
Luke Bermingham 864c0f4d62 Sync branch with master and update github actions for this branch 2023-02-17 18:19:47 +10:00
Luke Bermingham 92dd46dfc1
Bring Github actions to 5.2 branch (#105)
* Added dev and prod configs to webpack (#102)
* Adding github actions to create an NPM package for frontend library and make a release for the repo (#103)
* Added workflow file for pushing library to npm
* Added workflow file for making a release with built implementation/EpicGames archives
2023-02-17 18:03:37 +10:00
Luke Bermingham 2656e51303
Update container-images.yml
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-17 17:53:09 +10:00
Luke Bermingham b95bf904a6
Update container-images.yml
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-17 17:52:07 +10:00
Luke Bermingham 95a6706e33
Adding github actions to create an NPM package for frontend library and make a release for the repo (#103)
* Added workflow file for pushing library to npm
* Added worflow file for making a release with built implementation/EpicGames archives
2023-02-17 17:48:45 +10:00
Luke Bermingham b9dea21f6b
Added dev and prod configs to webpack (#102) 2023-02-17 17:17:22 +10:00
Luke Bermingham 12171d15c1 Move webpack config to prod instead of dev 2023-02-16 14:31:16 +10:00
Luke Bermingham 4a0acfcc8b
Merge pull request #99 from EpicGames/master
Bring dev work over to 5.2
2023-02-16 13:54:48 +10:00
William Belcher e5d17e81b6
Fix PR. Code was added on incorrect line (#97) 2023-02-15 14:19:31 +10:00
Michael Stopa 9beb25e2de
Merge pull request #96 from StomyPX/webxr_typo
Library not building on Linux due to incorrect casing
2023-02-15 14:42:01 +10:30
Michael Stopa 68e4d7e579
Library not building on Linux due to incorrect casing 2023-02-15 13:58:59 +10:30
Michael Wallace 3f769a7919
Move Customise Pixel Streaming Player Page from UE Docs to Frontend Docs (#90)
* Adding a /docs and /docs image resource directory

* Update README.md for frontend to have relevant UE docs pages moved into markdown

* Add the customise player web page information from the official UE docs
2023-02-15 12:32:37 +10:00
William Belcher 916567e6bc
Fix: SFU peer datachannels aren't being created (#95) 2023-02-15 12:05:46 +10:00
William Belcher 1b86e0f4f8
QOL: Display a message when multiple streamers are detected, notifying users to select the stream they want (#94) 2023-02-15 11:52:33 +10:00
William Belcher a9e52d4754
Fix crash on browsers where the xr object wasn't on the navigator (#93) 2023-02-15 11:46:32 +10:00
mcottontensor b659a5dec8
Removing the player id from forwarded messages when they're sent to the player. Some pixel streaming functionality was basing conditions off whether the player id field was existing or not (#91) 2023-02-14 15:42:20 +10:00
William Belcher 4fc43bcf29
Multi-streamer QOL improvements around stream switching and selection (#88)
* Set streamer selector on stream start

* Restart stream automatically one streamer selection change

* Only respect the `preferSFU` toggle if there's an SFU connected

* Only subscribe to the URL specified streamer if that streamer is connected
2023-02-13 12:25:58 +10:00
Luke Bermingham e4f8a09611
Merge pull request #86 from EpicGames/master
Merge master into 5.2
2023-02-10 15:16:44 +10:00
Luke Bermingham 165e211aca
Merge branch 'UE5.2' into master
Signed-off-by: Luke Bermingham <1215582+lukehb@users.noreply.github.com>
2023-02-10 15:15:42 +10:00
William Belcher 18ba9dbf56
Add experimental support for WebXR based experiences (#85)
* Add WebGL program. Refactor input to reduce arguments when calling handlers.

* Add XR gamepad handling. Make use of input API more consistent.

* Add support for rendering the video stream into the headset.

* Add handling for float data type when sending message to streamer.

* Run prettier pass on repo.
2023-02-10 15:05:57 +10:00
Luke Bermingham 239e7fb004
Add the rest of the browsers supported codecs after setting the preferred codec (#83) (#84)
Co-authored-by: William Belcher <william.belcher@xa.epicgames.com>
2023-02-09 13:56:22 +10:00
William Belcher 84d26f1504
Add the rest of the browsers supported codecs after setting the preferred codec (#83) 2023-02-09 13:55:31 +10:00
Luke Bermingham d010d83685
Merge pull request #78 from EpicGames/master
Fix: delayed mic input
2023-02-09 11:40:18 +10:00
William Belcher dd9ea80b00
Fix: delayed mic input as a result of signalling stereo mic when mic is infact mono (#77) 2023-02-09 11:38:41 +10:00