repo: janusweb action: commit revision: path_from: revision_from: 8db88f4443af98c4b82f4fd5b86ea3a15932f474: path_to: revision_to:
commit 8db88f4443af98c4b82f4fd5b86ea3a15932f474 Author: James BaicoianuDate: Sun May 13 22:09:11 2018 -0700 Added parts system for accessing individual model elements diff --git a/scripts/janusbase.js b/scripts/janusbase.js
--- a/scripts/janusbase.js
+++ b/scripts/janusbase.js
@@ -1,4 +1,4 @@
-elation.require(['engine.things.generic', 'utils.template'], function() {
+elation.require(['engine.things.generic', 'utils.template', 'janusweb.parts'], function() {
elation.template.add('janusweb.edit.object',
'');
@@ -10,6 +10,9 @@ elation.require(['engine.things.generic', 'utils.template'], function() {
this.frameupdates = {};
this.jschildren = [];
this.assets = {};
+
+ this.jsparts = new elation.janusweb.parts(this);
+
this.defineProperties({
room: { type: 'object' },
janus: { type: 'object' },
@@ -237,6 +240,7 @@ console.log('got collider', collider, collision_id);
this._proxyobject = new elation.proxy(this, {
parent: ['accessor', 'parent.getProxyObject'],
children: ['accessor', 'getChildProxies'],
+ parts: ['property', 'jsparts'],
js_id: ['property', 'properties.js_id'],
pos: ['property', 'position'],
vel: ['property', 'velocity'],
diff --git a/scripts/parts.js b/scripts/parts.js
new file mode 100644
index 0000000000000000000000000000000000000000..04bfef7be536af11a4d3c9151f7cc8c339433976
--- /dev/null
+++ b/scripts/parts.js
@@ -0,0 +1,48 @@
+elation.require([], function() {
+
+ elation.extend('janusweb.parts', class {
+ constructor(object) {
+ this._object = object;
+ this._parts = {};
+ this._proxies = {};
+ console.log('new shit', object);
+ //this.updateParts();
+ }
+ definePart(name, part) {
+ console.log('had a part', name, part);
+ Object.defineProperty(this, name, {
+ get: () => this.getPart(name),
+ enumerable: true,
+ configurable: true
+ });
+ }
+ updateParts() {
+ this._object.extractEntities();
+ var obj = this._object._target || this._object;
+ var parts = obj.parts;
+ for (var k in parts) {
+ this.definePart(k, parts[k]);
+ }
+ }
+ getPart(name) {
+ if (!this._proxies[name]) {
+ var obj = this._object._target || this._object;
+ var part = obj.parts[name];
+ this._parts[name] = elation.engine.things.janusbase({
+ type: 'janusbase',
+ name: name,
+ contaner: elation.html.create(),
+ engine: this._object.engine,
+ properties: {
+ object: part
+ }
+ });
+ // TODO - set up object hierarchy here
+ this._proxies[name] = this._parts[name].getProxyObject();
+ this._proxies[name].start();
+ }
+ return this._proxies[name];
+ }
+ })
+});
+
-----END OF PAGE-----