font caret underlining; repl line editing

This commit is contained in:
2023-10-05 13:02:12 +00:00
parent 5578b0f7e4
commit 8c69dfd71f
8 changed files with 128 additions and 65 deletions

View File

@@ -204,6 +204,7 @@ var gameobject = {
velocity:[0,0],
angularvelocity:0,
layer:0,
save:true,
selectable:true,
ed_locked:false,
@@ -290,11 +291,19 @@ var gameobject = {
if (ret.empty) return undefined;
return ret;
},
json_obj() {
var ur = gameobject.diff(this,this.__proto__);
return ur ? ur : {};
var d = gdiff(this,this.__proto__);
delete d.pos;
delete d.angle;
delete d.velocity;
delete d.angularvelocity;
d.components = [];
this.components.forEach(function(x) {
var c = gdiff(x, x.__proto__);
if (c) d.components.push(c);
});
return d;
},
transform_obj() {
@@ -398,17 +407,20 @@ var gameobject = {
right() { return [1,0].rotate(Math.deg2rad(this.angle));},
left() { return [-1,0].rotate(Math.deg2rad(this.angle));},
instances: [],
make(level) {
level ??= Primum;
var obj = Object.create(this);
this.instances.push(obj);
obj.body = make_gameobject();
Object.hide(obj, 'body');
obj.components = {};
obj.objects = {};
Object.complete_assign(obj, gameobject.impl);
Object.mixin(obj, gameobject.impl);
Object.hide(obj, 'components');
Object.hide(obj, 'objects');
obj.toJSON = gameobject.level_json;
obj._ed = {};
Object.hide(obj, '_ed');
Game.register_obj(obj);
@@ -416,6 +428,8 @@ var gameobject = {
obj.reparent(level);
Object.hide(obj, 'level')
for (var prop in this) {
var p = this[prop];
if (typeof p !== 'object') continue;
@@ -423,10 +437,12 @@ var gameobject = {
if ('ur' in p) {
obj[prop] = obj.spawn(prototypes.get_ur(p.ur));
obj.rename_obj(obj[prop].toString(), prop);
Object.hide(obj, prop);
} else if ('comp' in p) {
Log.warn(p);
obj[prop] = Object.assign(component[p.comp].make(obj), p);
obj.components[prop] = obj[prop];
Object.hide(obj,prop);
}
};