Files
cell/scripts/search.js
2025-01-21 16:46:18 -06:00

38 lines
814 B
JavaScript

var ex = {}
var eachobj = function (obj, fn) {
var val = fn(obj);
if (val) return val;
for (var o in obj.objects) {
if (obj.objects[o] === obj) console.error(`Object ${obj.toString()} is referenced by itself.`);
val = eachobj(obj.objects[o], fn);
if (val) return val;
}
};
ex.all_objects = function (fn, startobj = world) {
return eachobj(startobj, fn);
};
ex.find_object = function (fn, startobj = world) {};
var gtags = {};
ex.tag_add = function (tag, obj) {
gtags[tag] ??= new Set();
gtags[tag].add(obj)
};
ex.tag_rm = function (tag, obj) {
delete gtags[tag].delete(obj)
};
ex.tag_clear_guid = function (obj) {
for (var tag in gtags) gtags[tag].delete(obj)
};
ex.objects_with_tag = function (tag) {
if (!gtags[tag]) return [];
return Array.from(gtags[tag])
};
return ex