Update murom_1.0.0 API to 2019-09-12 version. Finalize 1.0.0
This commit is contained in:
@@ -7924,5 +7924,302 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<!-- API additions as of 2019-09-12 -->
|
||||
<script>
|
||||
|
||||
// ==== ENGLISH API ====
|
||||
|
||||
// Subscribe several functions in a single call.
|
||||
Reporter.prototype.subscribeMany = function(funcs)
|
||||
{
|
||||
for (var i = 0; i < funcs.length; ++i)
|
||||
{
|
||||
var func = funcs[i];
|
||||
this.subscribe(func);
|
||||
}
|
||||
}
|
||||
|
||||
murom.getMany = function(items, completionCallback)
|
||||
{
|
||||
var self = this;
|
||||
var results = {};
|
||||
|
||||
var count = 0;
|
||||
function reportCompletion()
|
||||
{
|
||||
if (++count == items.length)
|
||||
{
|
||||
if (completionCallback)
|
||||
{
|
||||
completionCallback(results);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var id in items)
|
||||
{
|
||||
const item = items[id];
|
||||
const url = item[0];
|
||||
const name = item[1];
|
||||
var isBinary = (item[2] == "b");
|
||||
|
||||
function success(contents)
|
||||
{
|
||||
results[name] = contents;
|
||||
reportCompletion()
|
||||
}
|
||||
function failure(status)
|
||||
{
|
||||
LOG(
|
||||
formatString(
|
||||
"ERROR Could not download URL: '{0}' status: '{1}'",
|
||||
url,
|
||||
status
|
||||
)
|
||||
);
|
||||
reportCompletion()
|
||||
}
|
||||
|
||||
if (isBinary)
|
||||
{
|
||||
murom.getb(url, success, failure);
|
||||
}
|
||||
else
|
||||
{
|
||||
murom.get(url, success, failure);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// ==== РУССКИЙ API ====
|
||||
|
||||
// Вне классов.
|
||||
|
||||
// JavaScript equivalent to printf/String.Format
|
||||
// https://stackoverflow.com/a/4673436
|
||||
function форматСтроки() {
|
||||
// How to shift “arguments”
|
||||
// https://stackoverflow.com/questions/4775895/how-to-shift-arguments
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var str = args.shift();
|
||||
return str.replace(/{(\d+)}/g, function(match, number) {
|
||||
return typeof args[number] != 'undefined'
|
||||
? args[number]
|
||||
: match
|
||||
;
|
||||
});
|
||||
}
|
||||
|
||||
// Уведомитель.
|
||||
|
||||
var Уведомитель = Reporter;
|
||||
Reporter.prototype.уведомить = function()
|
||||
{
|
||||
this.report();
|
||||
};
|
||||
Reporter.prototype.подписать = function(функция)
|
||||
{
|
||||
this.subscribe(функция);
|
||||
};
|
||||
|
||||
// Подписать сразу несколько функций за один вызов.
|
||||
Reporter.prototype.подписатьМного = function(funcs)
|
||||
{
|
||||
this.subscribeMany(funcs);
|
||||
};
|
||||
|
||||
var муром = {};
|
||||
|
||||
// Камера.
|
||||
|
||||
муром.камера = {};
|
||||
Object.defineProperty(муром.камера, "цветОчистки", {
|
||||
get: function()
|
||||
{
|
||||
return murom.camera.clearColor;
|
||||
},
|
||||
set: function(values)
|
||||
{
|
||||
murom.camera.clearColor = values;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(муром.камера, "позиция", {
|
||||
get: function()
|
||||
{
|
||||
return murom.camera.position;
|
||||
},
|
||||
set: function(values)
|
||||
{
|
||||
murom.camera.position = values;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(муром.камера, "вращение", {
|
||||
get: function()
|
||||
{
|
||||
return murom.camera.rotation;
|
||||
},
|
||||
set: function(values)
|
||||
{
|
||||
murom.camera.rotation = values;
|
||||
}
|
||||
});
|
||||
муром.камера.узелВПозиции = function(позиция, маска)
|
||||
{
|
||||
return murom.camera.nodeAtPosition(позиция, маска);
|
||||
};
|
||||
|
||||
// Мышь.
|
||||
|
||||
муром.мышь = {};
|
||||
Object.defineProperty(муром.мышь, "нажатыеКнопки", {
|
||||
get: function()
|
||||
{
|
||||
return murom.mouse.pressedButtons;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(муром.мышь, "позиция", {
|
||||
get: function()
|
||||
{
|
||||
return murom.mouse.position;
|
||||
}
|
||||
});
|
||||
муром.мышь.позицияИзменилась = new Уведомитель();
|
||||
murom.mouse.positionChanged.subscribe(function(){
|
||||
муром.мышь.позицияИзменилась.уведомить();
|
||||
});
|
||||
муром.мышь.нажатыеКнопкиИзменились = new Уведомитель();
|
||||
murom.mouse.pressedButtonsChanged.subscribe(function(){
|
||||
муром.мышь.нажатыеКнопкиИзменились.уведомить();
|
||||
});
|
||||
|
||||
// Узел.
|
||||
|
||||
Object.defineProperty(Node.prototype, "имя", {
|
||||
get: function()
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(Node.prototype, "позиция", {
|
||||
get: function()
|
||||
{
|
||||
return this.position;
|
||||
},
|
||||
set: function(values)
|
||||
{
|
||||
this.position = values;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(Node.prototype, "вращение", {
|
||||
get: function()
|
||||
{
|
||||
return this.rotation;
|
||||
},
|
||||
set: function(values)
|
||||
{
|
||||
this.rotation = values;
|
||||
}
|
||||
});
|
||||
Node.prototype.добавитьДитя = function(дитя)
|
||||
{
|
||||
this.addChild(дитя);
|
||||
};
|
||||
Node.prototype.задатьМаску = function(маска)
|
||||
{
|
||||
this.setMask(маска);
|
||||
};
|
||||
Node.prototype.задатьМатериал = function(материал)
|
||||
{
|
||||
this.setMaterial(материал);
|
||||
};
|
||||
|
||||
// Узлы.
|
||||
|
||||
муром.узлы = {};
|
||||
муром.узлы.узел = function(имя)
|
||||
{
|
||||
return murom.nodes.node(имя);
|
||||
};
|
||||
муром.узлы.создатьСферу = function(имя, радиус)
|
||||
{
|
||||
return murom.nodes.createSphere(имя, радиус);
|
||||
};
|
||||
муром.узлы.создатьУзел = function(имя, модель)
|
||||
{
|
||||
return murom.nodes.createNode(имя, модель);
|
||||
};
|
||||
|
||||
// Материал.
|
||||
|
||||
Material.prototype.задатьШейдеры = function(вершинный, фрагментный)
|
||||
{
|
||||
this.setShaders(вершинный, фрагментный);
|
||||
};
|
||||
Material.prototype.задатьЮниформ = function(имя, значение)
|
||||
{
|
||||
this.setUniform(имя, значение)
|
||||
};
|
||||
Material.prototype.задатьТекстуру = function(имяЮниформа, текстура)
|
||||
{
|
||||
this.setTexture(имяЮниформа, текстура)
|
||||
};
|
||||
|
||||
// Материалы.
|
||||
|
||||
муром.материалы = {};
|
||||
муром.материалы.создатьМатериал = function(имя)
|
||||
{
|
||||
return murom.materials.createMaterial(имя);
|
||||
};
|
||||
|
||||
// Ресурс.
|
||||
|
||||
Object.defineProperty(Resource.prototype, "имя", {
|
||||
get: function()
|
||||
{
|
||||
return this.name;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(Resource.prototype, "содержимое", {
|
||||
get: function()
|
||||
{
|
||||
return this.contents;
|
||||
}
|
||||
});
|
||||
|
||||
// Ресурсы.
|
||||
|
||||
муром.ресурсы = {};
|
||||
муром.ресурсы.получить = function(ресурсы, отклик)
|
||||
{
|
||||
murom.resources.get(ресурсы, отклик);
|
||||
};
|
||||
|
||||
муром.ресурсы.ресурс = function(имя)
|
||||
{
|
||||
return murom.resources.resource(имя);
|
||||
};
|
||||
муром.ресурсы.создатьРесурс = function(имя, содержимое)
|
||||
{
|
||||
return murom.resources.createResource(имя, содержимое);
|
||||
};
|
||||
|
||||
// Функции.
|
||||
|
||||
муром.получить = function(адрес, откликУспеха, откликПровала)
|
||||
{
|
||||
murom.get(адрес, откликУспеха, откликПровала);
|
||||
};
|
||||
|
||||
муром.получитьб = function(адрес, откликУспеха, откликПровала)
|
||||
{
|
||||
murom.getb(адрес, откликУспеха, откликПровала);
|
||||
};
|
||||
|
||||
муром.получитьМного = function(элементы, откликЗавершения)
|
||||
{
|
||||
murom.getMany(элементы, откликЗавершения);
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user