merge made functions into original prototype
This commit is contained in:
parent
266ad65ba7
commit
31331af57d
|
@ -34,40 +34,39 @@ var sprite = clone(component, {
|
||||||
angle: 0,
|
angle: 0,
|
||||||
rect: {s0:0, s1: 1, t0: 0, t1: 1},
|
rect: {s0:0, s1: 1, t0: 0, t1: 1},
|
||||||
|
|
||||||
dimensions() { return cmd(64,this.path); },
|
get enabled() { return cmd(114,this.id); },
|
||||||
width() { return cmd(64,this.path).x; },
|
set enabled(x) { cmd(20,this.id,x); },
|
||||||
height() { return cmd(64,this.path).y; },
|
set color(x) { cmd(96,this.id,x); },
|
||||||
|
get color() {return undefined; },
|
||||||
|
get pos() { return cmd(111, this.id); },
|
||||||
|
set pos(x) { cmd(37,this.id,x); },
|
||||||
|
set layer(x) { cmd(60, this.id, x); },
|
||||||
|
get layer() { return undefined; },
|
||||||
|
|
||||||
make(go) {
|
boundingbox() {
|
||||||
var sprite = Object.create(this);
|
|
||||||
var id = make_sprite(go,this.path,this.pos);
|
|
||||||
complete_assign(sprite, {
|
|
||||||
get enabled() { return cmd(114,id); },
|
|
||||||
set enabled(x) { cmd(20,id,x); },
|
|
||||||
set color(x) { cmd(96,id,x); },
|
|
||||||
get color() {return undefined; },
|
|
||||||
get pos() { return cmd(111, id); },
|
|
||||||
set pos(x) { cmd(37,id,x); },
|
|
||||||
set layer(x) { cmd(60, id, x); },
|
|
||||||
get layer() { return undefined; },
|
|
||||||
|
|
||||||
boundingbox() {
|
|
||||||
var dim = this.dimensions();
|
var dim = this.dimensions();
|
||||||
dim = dim.scale(this.gameobject.scale);
|
dim = dim.scale(this.gameobject.scale);
|
||||||
var realpos = this.pos.copy();
|
var realpos = this.pos.copy();
|
||||||
realpos.x = realpos.x * dim.x + (dim.x/2);
|
realpos.x = realpos.x * dim.x + (dim.x/2);
|
||||||
realpos.y = realpos.y * dim.y + (dim.y/2);
|
realpos.y = realpos.y * dim.y + (dim.y/2);
|
||||||
return cwh2bb(realpos,dim);
|
return cwh2bb(realpos,dim);
|
||||||
},
|
},
|
||||||
|
|
||||||
sync() {
|
sync() {
|
||||||
if (this.path)
|
if (this.path)
|
||||||
cmd(12,id,this.path,this.rect);
|
cmd(12,this.id,this.path,this.rect);
|
||||||
},
|
},
|
||||||
|
|
||||||
kill() { cmd(9,id); },
|
kill() { cmd(9,this.id); },
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
dimensions() { return cmd(64,this.path); },
|
||||||
|
width() { return cmd(64,this.path).x; },
|
||||||
|
height() { return cmd(64,this.path).y; },
|
||||||
|
|
||||||
|
make(go) {
|
||||||
|
var sprite = Object.create(this);
|
||||||
|
sprite.id = make_sprite(go);
|
||||||
sprite.layer = 1;
|
sprite.layer = 1;
|
||||||
return sprite;
|
return sprite;
|
||||||
},
|
},
|
||||||
|
@ -634,27 +633,11 @@ var circle2d = clone(collider2d, {
|
||||||
set pos(x) { this.offset = x; },
|
set pos(x) { this.offset = x; },
|
||||||
|
|
||||||
make(go) {
|
make(go) {
|
||||||
var circle = clone(this);
|
var circle = Object.create(this.made);
|
||||||
var circ = make_circle2d(go, circle.radius, circle.offset);
|
var circ = make_circle2d(go, circle.radius, circle.offset);
|
||||||
Object.assign(circle, circ);
|
Object.assign(circle, circ);
|
||||||
Object.defineProperty(circle, 'id', {enumerable:false});
|
Object.defineProperty(circle, 'id', {enumerable:false});
|
||||||
Object.defineProperty(circle, 'shape', {enumerable:false});
|
Object.defineProperty(circle, 'shape', {enumerable:false});
|
||||||
|
|
||||||
complete_assign(circle, {
|
|
||||||
set radius(x) { cmd_circle2d(0,this.id,x); },
|
|
||||||
get radius() { return cmd_circle2d(2,this.id); },
|
|
||||||
|
|
||||||
set offset(x) { cmd_circle2d(1,this.id,x); },
|
|
||||||
get offset() { return cmd_circle2d(3,this.id); },
|
|
||||||
|
|
||||||
boundingbox() {
|
|
||||||
var diameter = this.radius*2*this.gameobject.scale;
|
|
||||||
return cwh2bb(this.offset.scale(this.gameobject.scale), [this.radius,this.radius]);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
complete_assign(circle, this.make_fns);
|
|
||||||
|
|
||||||
return circle;
|
return circle;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -666,6 +649,22 @@ var circle2d = clone(collider2d, {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
circle2d.made = Object.create(circle2d);
|
||||||
|
complete_assign(circle2d.made, collider2d.make_fns);
|
||||||
|
complete_assign(circle2d.made, {
|
||||||
|
set radius(x) { cmd_circle2d(0,this.id,x); },
|
||||||
|
get radius() { return cmd_circle2d(2,this.id); },
|
||||||
|
|
||||||
|
set offset(x) { cmd_circle2d(1,this.id,x); },
|
||||||
|
get offset() { return cmd_circle2d(3,this.id); },
|
||||||
|
|
||||||
|
boundingbox() {
|
||||||
|
var diameter = this.radius*2*this.gameobject.scale;
|
||||||
|
return cwh2bb(this.offset.scale(this.gameobject.scale), [this.radius,this.radius]);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ASSETS */
|
/* ASSETS */
|
||||||
|
|
||||||
|
|
|
@ -239,8 +239,8 @@ var DebugControls = {};
|
||||||
DebugControls.inputs = {};
|
DebugControls.inputs = {};
|
||||||
DebugControls.inputs.f1 = function () { Debug.draw_phys(!Debug.phys_drawing); };
|
DebugControls.inputs.f1 = function () { Debug.draw_phys(!Debug.phys_drawing); };
|
||||||
DebugControls.inputs.f1.doc = "Draw physics debugging aids.";
|
DebugControls.inputs.f1.doc = "Draw physics debugging aids.";
|
||||||
DebugControls.inputs.f3 = function() { Debug.draw_bb = !Debug.draw_bb; };
|
//DebugControls.inputs.f3 = function() { Debug.draw_bb = !Debug.draw_bb; };
|
||||||
DebugControls.inputs.f3.doc = "Toggle drawing bounding boxes.";
|
//DebugControls.inputs.f3.doc = "Toggle drawing bounding boxes.";
|
||||||
DebugControls.inputs.f4 = function() {
|
DebugControls.inputs.f4 = function() {
|
||||||
Debug.draw_names = !Debug.draw_names;
|
Debug.draw_names = !Debug.draw_names;
|
||||||
Debug.draw_gizmos = !Debug.draw_gizmos;
|
Debug.draw_gizmos = !Debug.draw_gizmos;
|
||||||
|
|
|
@ -748,13 +748,13 @@ editor.inputs['C-d'] = function() {
|
||||||
editor.inputs['C-d'].doc = "Duplicate all selected objects.";
|
editor.inputs['C-d'].doc = "Duplicate all selected objects.";
|
||||||
|
|
||||||
editor.inputs.f3 = function() {
|
editor.inputs.f3 = function() {
|
||||||
Log.say("Selected JSON ...");
|
|
||||||
editor.selectlist.forEach(x => Log.say(JSON.stringify(x,null,2)));
|
|
||||||
Log.say("UR JSON ...");
|
|
||||||
for (var key of Object.keys(editor.selectlist[0].ur.type))
|
|
||||||
Log.say(key);
|
|
||||||
|
|
||||||
editor.selectlist.forEach(x => Log.say(JSON.stringify(x.ur.type,null,2)));
|
editor.selectlist.forEach(function(x) {
|
||||||
|
Log.say("Selected JSON ...");
|
||||||
|
Log.say(JSON.stringify(x,null,2));
|
||||||
|
Log.say("UR JSON");
|
||||||
|
Log.say(JSON.stringify(x.__proto__,null,2))
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
editor.inputs['C-m'] = function() {
|
editor.inputs['C-m'] = function() {
|
||||||
|
|
|
@ -313,21 +313,28 @@ var gameobject = {
|
||||||
right() { return [1,0].rotate(Math.deg2rad(this.angle));},
|
right() { return [1,0].rotate(Math.deg2rad(this.angle));},
|
||||||
left() { return [-1,0].rotate(Math.deg2rad(this.angle));},
|
left() { return [-1,0].rotate(Math.deg2rad(this.angle));},
|
||||||
|
|
||||||
/* Given an ur-type, spawn one attached to us */
|
|
||||||
|
|
||||||
toJSON() {
|
toJSON() {
|
||||||
|
function objdiff(from, to) {
|
||||||
|
if (!to) return from; /* Everything on from is unique */
|
||||||
var ret = {};
|
var ret = {};
|
||||||
for (var key in this) {
|
for (var key of Object.keys(from)) {
|
||||||
var prop = Object.getOwnPropertyDescriptor(this, key);
|
if (typeof from[key] === 'object') {
|
||||||
if (!prop) continue;
|
var diff = objdiff(from[key], to[key]);
|
||||||
if (prop.get) {
|
if (diff && !diff.empty) ret[key] = diff;
|
||||||
if (prop.get() !== this.__proto__[key])
|
continue;
|
||||||
ret[key] = prop.get();
|
|
||||||
}
|
}
|
||||||
else
|
if (from[key] !== to[key])
|
||||||
ret[key] = this[key];
|
ret[key] = from[key];
|
||||||
}
|
}
|
||||||
|
Log.say("Returning a obj with values ...");
|
||||||
|
for (var key in ret)
|
||||||
|
Log.say(key);
|
||||||
|
|
||||||
|
if (ret.empty) return undefined;
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return objdiff(this, this.__proto__);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -339,6 +346,8 @@ var gameobject = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dainty_assign(obj, this);
|
||||||
|
|
||||||
obj.check_registers(obj);
|
obj.check_registers(obj);
|
||||||
|
|
||||||
gameobject.make_parentable(obj);
|
gameobject.make_parentable(obj);
|
||||||
|
@ -402,6 +411,8 @@ gameobject.make_parentable = function(obj) {
|
||||||
obj.objects = objects;
|
obj.objects = objects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gameobject.entity = {};
|
||||||
|
|
||||||
/* Default objects */
|
/* Default objects */
|
||||||
var prototypes = {};
|
var prototypes = {};
|
||||||
prototypes.ur = {};
|
prototypes.ur = {};
|
||||||
|
|
|
@ -1400,17 +1400,7 @@ JSValue duk_q_body(JSContext *js, JSValueConst this, int argc, JSValueConst *arg
|
||||||
}
|
}
|
||||||
|
|
||||||
JSValue duk_make_sprite(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
|
JSValue duk_make_sprite(JSContext *js, JSValueConst this, int argc, JSValueConst *argv) {
|
||||||
int go = js2int(argv[0]);
|
return JS_NewInt64(js, make_sprite(js2int(argv[0])));
|
||||||
const char *path = JS_ToCString(js, argv[1]);
|
|
||||||
HMM_Vec2 pos = js2hmmv2(argv[2]);
|
|
||||||
int sprite = make_sprite(go);
|
|
||||||
struct sprite *sp = id2sprite(sprite);
|
|
||||||
sprite_loadtex(sp, path, ST_UNIT);
|
|
||||||
sp->pos = pos;
|
|
||||||
|
|
||||||
JS_FreeCString(js, path);
|
|
||||||
|
|
||||||
return JS_NewInt64(js, sprite);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make anim from texture */
|
/* Make anim from texture */
|
||||||
|
@ -1669,7 +1659,7 @@ void ffi_load() {
|
||||||
|
|
||||||
DUK_FUNC(sys_cmd, 1)
|
DUK_FUNC(sys_cmd, 1)
|
||||||
|
|
||||||
DUK_FUNC(make_sprite, 3)
|
DUK_FUNC(make_sprite, 1)
|
||||||
DUK_FUNC(make_anim2d, 3)
|
DUK_FUNC(make_anim2d, 3)
|
||||||
DUK_FUNC(spline_cmd, 6)
|
DUK_FUNC(spline_cmd, 6)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue