UNPKG

web3d

Version:

MetaEditor — ReactJS Pixel Streaming library, helps integrate Unreal Engine v.5 in the browser. Allows you to send commands and get callbacks from the stream server with launched Unreal Engine.

1 lines 3.77 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=_interopRequireDefault(require("react")),_hooks=require("../../hooks/"),_useResolution=_interopRequireDefault(require("./hooks/useResolution")),_useLifetime=_interopRequireDefault(require("./hooks/useLifetime")),_useTrigger=_interopRequireDefault(require("./hooks/useTrigger")),_reducer=_interopRequireDefault(require("./reducer")),_client=_interopRequireDefault(require("../../client/"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}const{defaultState}=_reducer.default,actions=a=>{const[b,c,d]=(0,_hooks.useReducerEvents)(_reducer.default.reducer,_reducer.default.initialState),e=a=>c({type:_reducer.default.KEY.UPDATE,payload:a}),f=a=>c({type:_reducer.default.KEY.SETTINGS,payload:a}),g=a=>c({type:_reducer.default.KEY.META_SETTINGS,payload:a}),[h,i]=(0,_hooks.useStateEvents)([]),[j,k]=(0,_hooks.useStateEvents)([]),[l,m]=(0,_hooks.useStateEvents)([]),n=(0,_useResolution.default)({state:b,dispatch:e}),o=new class{debug(a){m(b=>[a,...b].filter((a,b)=>1e3>b))}commands(b){if("function"==typeof a.onCommand){const c=a.onCommand(b);c&&(b=c)}i(a=>[b,...a].filter((a,b)=>100>b))}callbacks(b){if("function"==typeof a.onCallback){const c=a.onCallback(b);c&&(b=c)}k(a=>[b,...a].filter((a,b)=>100>b))}};(0,_useTrigger.default)({onCommand:o.commands,onCallback:o.callbacks,onDebug:o.debug}),_react.default.useEffect(()=>{q.init(),window.__ps_state__=b},[]);const p=_react.default.useRef(null);_react.default.useEffect(()=>{b.settings.host&&a.onReady(b)},[b.settings.host]),_react.default.useEffect(()=>{b.active&&!a.settings.inited&&(clearTimeout(p.current),p.current=setTimeout(()=>{q.setVolume(a.settings.volume),f({inited:!0})},100))},[b.active]);const q=new class{constructor(){this.client=_client.default,this.useTrigger=_useTrigger.default}emitAsync(a){return this.client.emitAsync(a)}emitConsole(a){return this.client.emitConsole(a)}get commands(){return{clear:()=>i([]),list:h}}get callbacks(){return{clear:()=>k([]),list:j}}get logs(){return{clear:()=>m([]),list:l}}init(){const{onRestart:b,onLoad:c,onConnect:d,onError:h,onClose:i,settings:j,metaSettings:k}=a;f(j),g(k),_client.default.init({onUserCount:a=>{e({users_count:a})},onLoad:a=>{e({...defaultState,stream_config:a,loaded:!0,connected:!0,stream_stopped:!1,stream_connecting:!1}),c(a)},onConnect:()=>{e({...defaultState,connected:!0,stream_stopped:!1}),d()},onError:({code:a,reason:b})=>{e({error:{code:a,reason:b},connected:!1,stream_stopped:!1,stream_connecting:!1}),h({code:a,reason:b})},onClose:async({code:a,reason:c})=>{e({...defaultState,closed:{code:a,reason:c},loaded:!1,connected:!1,stream_stopped:!1,stream_connecting:!1}),4e3===a&&(await b()),i()},onMouseMove:a=>{e({mouse_moving:a})},onAggregatedStats:a=>{e({aggregated_stats:a})},onQuality:a=>{e({quality_speed:a})}})}switchConnection(){b.active?(this.client.exit(),e({loaded:!1,connected:!1,stream_stopped:!0})):_client.default.start({host:b.settings.host,port:b.settings.port,pixelStreaming:b.settings.pixelStreaming})}setConnection({host:a,port:b}){f({host:a,port:b})}initConnection({host:a=void 0,port:c=void 0}={}){a&&c&&f({host:a,port:c}),e({stream_connecting:!0}),_client.default.start({host:a||b.settings.host,port:c||b.settings.port,pixelStreaming:b.settings.pixelStreaming})}switchNotificationsCallabacks(){g({notifyCallbacks:!b.metaSettings.notifyCallbacks})}switchNotificationsCommands(){g({notifyCommands:!b.metaSettings.notifyCommands})}changeQuality(a){b.active&&(n.resize(a),f({quality:a}))}setVolume(a){b.active&&(_client.default.emitAsync({command:"user_sound",request:{body:{volume:a}},verification_id:void 0}),f({volume:a}))}};return{state:b,cls:q}};var _default=actions;exports.default=_default;