new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
251 lines
6.5 KiB
JavaScript
251 lines
6.5 KiB
JavaScript
// Generated by CoffeeScript 1.7.1
|
|
|
|
/*
|
|
Various useful methods
|
|
|
|
@class bkcore.Utils
|
|
@author Thibaut 'BKcore' Despoulain <http://bkcore.com>
|
|
*/
|
|
|
|
(function() {
|
|
var Utils, exports;
|
|
|
|
Utils = (function() {
|
|
|
|
/*
|
|
Creates a bkcore.threejs.Shaders["normalV"|"normal"] material
|
|
with given parameters
|
|
*/
|
|
function Utils() {}
|
|
|
|
Utils.createNormalMaterial = function(opts) {
|
|
var material, parameters, shader, shadername, uniforms;
|
|
if (opts == null) {
|
|
opts = {};
|
|
}
|
|
if (opts.ambient == null) {
|
|
opts.ambient = 0x444444;
|
|
}
|
|
if (opts.normalScale == null) {
|
|
opts.normalScale = 1.0;
|
|
}
|
|
if (opts.reflectivity == null) {
|
|
opts.reflectivity = 0.9;
|
|
}
|
|
if (opts.shininess == null) {
|
|
opts.shininess = 42;
|
|
}
|
|
if (opts.metal == null) {
|
|
opts.metal = false;
|
|
}
|
|
shadername = opts.perPixel ? "normalV" : "normal";
|
|
shader = bkcore.threejs.Shaders[shadername];
|
|
uniforms = THREE.UniformsUtils.clone(shader.uniforms);
|
|
uniforms["enableDiffuse"].value = true;
|
|
uniforms["enableSpecular"].value = true;
|
|
uniforms["enableReflection"].value = !!opts.cube;
|
|
uniforms["tNormal"].texture = opts.normal;
|
|
uniforms["tDiffuse"].texture = opts.diffuse;
|
|
uniforms["tSpecular"].texture = opts.specular;
|
|
uniforms["uAmbientColor"].value.setHex(opts.ambient);
|
|
uniforms["uAmbientColor"].value.convertGammaToLinear();
|
|
uniforms["uNormalScale"].value = opts.normalScale;
|
|
if (opts.cube != null) {
|
|
uniforms["tCube"].texture = opts.cube;
|
|
uniforms["uReflectivity"].value = opts.reflectivity;
|
|
}
|
|
parameters = {
|
|
fragmentShader: shader.fragmentShader,
|
|
vertexShader: shader.vertexShader,
|
|
uniforms: uniforms,
|
|
lights: true,
|
|
fog: false
|
|
};
|
|
material = new THREE.ShaderMaterial(parameters);
|
|
material.perPixel = true;
|
|
material.metal = opts.metal;
|
|
return material;
|
|
};
|
|
|
|
|
|
/*
|
|
Projects an object origin vector to screen using given camera
|
|
@param THREE.Object3D object The object which origin you want to project
|
|
@param THREE.Camera camera The camera of the projection
|
|
@return THEE.Vector3 Projected verctor
|
|
*/
|
|
|
|
Utils.projectOnScreen = function(object, camera) {
|
|
var c, lPos, mat;
|
|
mat = new THREE.Matrix4();
|
|
mat.multiply(camera.matrixWorldInverse, object.matrixWorld);
|
|
mat.multiply(camera.projectionMatrix, mat);
|
|
c = mat.n44;
|
|
lPos = new THREE.Vector3(mat.n14 / c, mat.n24 / c, mat.n34 / c);
|
|
return lPos.multiplyScalar(0.5).addScalar(0.5);
|
|
};
|
|
|
|
|
|
/*
|
|
Get an url parameter
|
|
@param String name Parameter slug
|
|
@return Mixed
|
|
*/
|
|
|
|
Utils.URLParameters = null;
|
|
|
|
Utils.getURLParameter = function(name) {
|
|
if (this.URLParameters == null) {
|
|
this.URLParameters = {};
|
|
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (function(_this) {
|
|
return function(m, key, val) {
|
|
return _this.URLParameters[key] = val;
|
|
};
|
|
})(this));
|
|
}
|
|
return this.URLParameters[name];
|
|
};
|
|
|
|
|
|
/*
|
|
Get top offset of an element
|
|
@param obj HTMLElement
|
|
*/
|
|
|
|
Utils.getOffsetTop = function(obj) {
|
|
var curtop;
|
|
curtop = obj.offsetTop;
|
|
if (obj.offsetParent) {
|
|
while (obj = obj.offsetParent) {
|
|
curtop += obj.offsetTop;
|
|
}
|
|
}
|
|
return curtop;
|
|
};
|
|
|
|
|
|
/*
|
|
Scrolls page to given element id
|
|
@param string id The ID of the element
|
|
*/
|
|
|
|
Utils.scrollTo = function(id) {
|
|
return window.scroll(0, this.getOffsetTop(document.getElementById(id)));
|
|
};
|
|
|
|
|
|
/*
|
|
Add or remove a class from an element
|
|
@param string id [description]
|
|
@param string cssclass [description]
|
|
@param bool active [description]
|
|
*/
|
|
|
|
Utils.updateClass = function(id, cssclass, active) {
|
|
var e;
|
|
e = document.getElementById(id);
|
|
if (e == null) {
|
|
return;
|
|
}
|
|
if (active) {
|
|
return e.classList.add(cssclass);
|
|
} else {
|
|
return e.classList.remove(cssclass);
|
|
}
|
|
};
|
|
|
|
|
|
/*
|
|
Performs an XMLHttpRequest
|
|
@param string url [description]
|
|
@param bool postData true = POST, false = GET
|
|
@param {Function} callback [description]
|
|
@param {Object} data [description]
|
|
*/
|
|
|
|
Utils.request = function(url, postData, callback, data) {
|
|
var XMLHttpFactories, createXMLHTTPObject, i, method, qdata, req, val;
|
|
XMLHttpFactories = [
|
|
function() {
|
|
return new XMLHttpRequest();
|
|
}, function() {
|
|
return new ActiveXObject("Msxml2.XMLHTTP");
|
|
}, function() {
|
|
return new ActiveXObject("Msxml3.XMLHTTP");
|
|
}, function() {
|
|
return new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
];
|
|
createXMLHTTPObject = function() {
|
|
var e, i, xmlhttp, _i, _ref;
|
|
xmlhttp = false;
|
|
for (i = _i = 0, _ref = XMLHttpFactories.length; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
|
|
try {
|
|
xmlhttp = XMLHttpFactories[i]();
|
|
} catch (_error) {
|
|
e = _error;
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
return xmlhttp;
|
|
};
|
|
req = createXMLHTTPObject();
|
|
if (req == null) {
|
|
return;
|
|
}
|
|
method = postData != null ? "POST" : "GET";
|
|
qdata = "o=bk";
|
|
if (data != null) {
|
|
for (i in data) {
|
|
val = data[i];
|
|
qdata += "&" + i + "=" + val;
|
|
if (postData != null) {
|
|
url += "?" + qdata;
|
|
}
|
|
}
|
|
}
|
|
req.open(method, url, true);
|
|
if (postData != null) {
|
|
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
|
}
|
|
req.onreadystatechange = function() {
|
|
if (req.readyState !== 4) {
|
|
return;
|
|
}
|
|
if (!(req.status === 200 || req.status === 304)) {
|
|
return;
|
|
}
|
|
return typeof callback === "function" ? callback(req) : void 0;
|
|
};
|
|
req.send(qdata);
|
|
return req;
|
|
};
|
|
|
|
|
|
/*
|
|
Checks whether the device supports Touch input
|
|
*/
|
|
|
|
Utils.isTouchDevice = function() {
|
|
return ('ontouchstart' in window) || (navigator.MaxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0);
|
|
};
|
|
|
|
return Utils;
|
|
|
|
})();
|
|
|
|
|
|
/*
|
|
Exports
|
|
@package bkcore
|
|
*/
|
|
|
|
exports = exports != null ? exports : this;
|
|
|
|
exports.bkcore || (exports.bkcore = {});
|
|
|
|
exports.bkcore.Utils = Utils;
|
|
|
|
}).call(this);
|