1
0
Fork 0

Initial commit for canvas-livery

Signed-off-by: fly <merspieler@airmail.cc>
This commit is contained in:
fly 2020-11-16 06:11:18 +11:00
parent 5dde54d43b
commit 93b9098b9c

View file

@ -571,6 +571,67 @@ var livery_update = {
};
# canvas_livery
# =============================================================================
# Class for Canvas based liveries
#
var canvas_livery = {
new: func(liveriesdir, interval = 10.01, callback = nili, resolution=4096) {
var m = { parents: [canvas_livery, overlay_update.new()] };
m.parents[1].add(liveriesdir, "sim/model/livery/file", callback);
m.parents[1].interval = interval;
m.resolution = resolution;
m.targets = {};
m.targetsByProperty = {};
return m;
},
stop: func {
me.parents[1].stop();
},
setResolution: func(resolution) {
},
createTarget: func(name, objects, property, resolution=4096) {
me.targets[name] = {
canvas: nil,
layers: {},
groups: {},
listener: nil,
resolution: resolution,
};
me.targets[name].canvas = canvas.new({
"name": name,
"size": [resolution, resolution],
"view": [resolution, resolution],
"mipmapping": 1
});
foreach (var object; objects) {
me.targets[name].canvas.addPlacement({"node": object});
}
me.targets[name].groups["base"] = me.targets[name].canvas.createGroup("base");
me.targets[name].layers["base"] = me.targets[name].groups["base"].createChild("image").setFile(getprop(property)).setSize(resolution,resolution);
me.targetsByProperty[property] = name;
me.targets[name].listener = setlistener(property, func(property) {
me.targets[name].groups["base"].removeAllChildren();
me.targets[name].layers["base"] = me.targets[name].groups["base"].createChild("image").setFile(property.getValue()).setSize(resolution,resolution);
});
},
addLayer: func(target, name, file) {
me.targets[target].groups[name] = me.targets[target].canvas.createGroup(name);
me.targets[target].layers[name] = me.targets[target].groups[name].createChild("image").setFile(file).setSize(me.targets[target].resolution, me.targets[target].resolution);
},
removeLayer: func(target, name) {
me.targets[target].layers[name].removeAllChildren();
me.targets[target].layers[name] = nil;
},
showLayer: func(target, name) {
me.targets[target].layers[name].show();
},
hideLayer: func(target, name) {
me.targets[target].layers[name].hide();
},
};
# overlay_update
# =============================================================================