UNPKG

react-encompass-ecs

Version:
3 lines (2 loc) 2.76 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("use-immer"),require("lodash"),require("react"),require("rxjs"),require("encompass-ecs"),require("immer")):"function"==typeof define&&define.amd?define(["exports","use-immer","lodash","react","rxjs","encompass-ecs","immer"],t):t(e.reactEncompassEcs={},e.useImmer,e.lodash,e.react,e.rxjs,e.encompassEcs,e.immer)}(this,function(e,t,r,n,o,c,u){var i="default"in n?n.default:n,a=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t,t}(c.DrawComponent),s=new o.Subject,f=n.createContext({});e.ReactSyncComponent=a,e.GameEntitiesContext=f,e.useComponent=function(e,o,u){void 0===o&&(o=!1),void 0===u&&(u=f);var i=t.useImmer({}),p=i[0],d=i[1],l=n.useContext(u);n.useEffect(function(){d(function(t){for(var n=0,o=Object.keys(e);n<o.length;n+=1)for(var u=o[n],i=0,s=Object.values(l);i<s.length;i+=1){var f=s[i],p=f.get_component(a).entity_id,d=e[u];void 0===t[u]&&(t[u]={}),t[u][p]!==f&&c.EntityChecker.check_entity(f,r.flatten(d))&&(t[u][p]=f)}})},[d,l]);var m=n.useMemo(function(){for(var t=r.mapValues(p,function(t,r){return Object.values(t).map(function(t){return e[r].map(function(e){return t.get_component(e)})})}),n=0,o=Object.keys(e);n<o.length;n+=1){var c=o[n];t[c]||(t[c]=[])}return t},[p]);return function(e){var t=n.useState(!0)[1];n.useEffect(function(){if(e){var r=s.subscribe(function(){return t(function(e){return!e})});return function(){return r.unsubscribe()}}},[e])}(o),m},e.Provider=function(e){return i.createElement((e.context||f).Provider,{value:e.entities},e.children)},e.updaterContext=s,e.EntitySyncer=function(e){this.currentUpdaterValue=!0,this.entities={};var t=u.produce(function(e,t,r){e[t]=r}),r=this,n=function(e){function n(){e.apply(this,arguments)}return e&&(n.__proto__=e),(n.prototype=Object.create(e&&e.prototype)).constructor=n,n.prototype.render=function(e){var n=e.get_component(a).entity_id;r.entities=t(r.entities,n,e)},n}(c.EntityRenderer);n=function(e,t,r,n){var o,c=arguments.length,u=c<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(o=e[i])&&(u=(c<3?o(u):c>3?o(t,r,u):o(t,r))||u);return c>3&&u&&Object.defineProperty(t,r,u),u}([c.Renders(a)],n),e.add_renderer(n),s.subscribe(function(e){return r.currentUpdaterValue=e}),e.add_renderer(function(e){function t(){e.apply(this,arguments),this.layer=1}return e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t,t.prototype.render=function(){s.next(!r.currentUpdaterValue)},t}(c.GeneralRenderer))}}); //# sourceMappingURL=react-encompass-ecs.umd.js.map