Browse Source

Объединить api и апи в один файл

master
parent
commit
f8467cc034
1 changed files with 294 additions and 0 deletions
  1. +294
    -0
      api/2019-09-12.js

+ 294
- 0
api/2019-09-12.js View File

@@ -0,0 +1,294 @@

// ==== 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(элементы, откликЗавершения);
};

Loading…
Cancel
Save