|
- // Вне классов.
-
- // 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(имя);
- }
|