UNPKG

react-encompass-ecs

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