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
193 lines
4.7 KiB
CoffeeScript
193 lines
4.7 KiB
CoffeeScript
###
|
|
Various useful methods
|
|
|
|
@class bkcore.Utils
|
|
@author Thibaut 'BKcore' Despoulain <http://bkcore.com>
|
|
###
|
|
class Utils
|
|
|
|
###
|
|
Creates a bkcore.threejs.Shaders["normalV"|"normal"] material
|
|
with given parameters
|
|
###
|
|
@createNormalMaterial = (opts)->
|
|
|
|
opts ?= {}
|
|
opts.ambient ?= 0x444444
|
|
opts.normalScale ?= 1.0
|
|
opts.reflectivity ?= 0.9
|
|
opts.shininess ?= 42
|
|
opts.metal ?= false
|
|
|
|
shadername = if opts.perPixel then "normalV" else "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?
|
|
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
|
|
###
|
|
@projectOnScreen: (object, camera)->
|
|
|
|
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
|
|
###
|
|
@URLParameters: null
|
|
@getURLParameter: (name)->
|
|
|
|
if !@URLParameters?
|
|
@URLParameters = {}
|
|
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m, key, val)=>
|
|
@URLParameters[key] = val
|
|
)
|
|
|
|
return @URLParameters[name]
|
|
|
|
###
|
|
Get top offset of an element
|
|
@param obj HTMLElement
|
|
###
|
|
@getOffsetTop: (obj)->
|
|
|
|
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
|
|
###
|
|
@scrollTo: (id)->
|
|
|
|
window.scroll(0, @getOffsetTop(document.getElementById(id)))
|
|
|
|
###
|
|
Add or remove a class from an element
|
|
@param string id [description]
|
|
@param string cssclass [description]
|
|
@param bool active [description]
|
|
###
|
|
@updateClass: (id, cssclass, active)->
|
|
|
|
e = document.getElementById(id)
|
|
return unless e?
|
|
|
|
if active
|
|
e.classList.add(cssclass)
|
|
else
|
|
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]
|
|
###
|
|
@request: (url, postData, callback, data)->
|
|
|
|
XMLHttpFactories = [
|
|
()-> return new XMLHttpRequest()
|
|
()-> return new ActiveXObject("Msxml2.XMLHTTP")
|
|
()-> return new ActiveXObject("Msxml3.XMLHTTP")
|
|
()-> return new ActiveXObject("Microsoft.XMLHTTP")
|
|
]
|
|
|
|
createXMLHTTPObject = () ->
|
|
|
|
xmlhttp = false
|
|
|
|
for i in [0..XMLHttpFactories.length]
|
|
try
|
|
xmlhttp = XMLHttpFactories[i]()
|
|
catch e
|
|
continue
|
|
break
|
|
|
|
return xmlhttp
|
|
|
|
req = createXMLHTTPObject()
|
|
return unless req?
|
|
|
|
method = if postData? then "POST" else "GET"
|
|
|
|
qdata = "o=bk"
|
|
if data?
|
|
for i, val of data
|
|
qdata += "&"+i+"="+val
|
|
url += "?"+qdata if postData?
|
|
|
|
req.open(method,url,true)
|
|
|
|
if postData?
|
|
req.setRequestHeader('Content-type','application/x-www-form-urlencoded')
|
|
|
|
req.onreadystatechange = () ->
|
|
return unless req.readyState is 4
|
|
return unless req.status is 200 or req.status is 304
|
|
callback?(req)
|
|
|
|
req.send(qdata)
|
|
|
|
return req
|
|
|
|
###
|
|
Checks whether the device supports Touch input
|
|
###
|
|
@isTouchDevice: ()->
|
|
|
|
return ('ontouchstart' of window) or
|
|
(navigator.MaxTouchPoints > 0) or
|
|
(navigator.msMaxTouchPoints > 0)
|
|
|
|
###
|
|
Exports
|
|
@package bkcore
|
|
###
|
|
exports = exports ? @
|
|
exports.bkcore ||= {}
|
|
exports.bkcore.Utils = Utils |