Вход Регистрация
Файл: Space race/bkcore.coffee/Utils.js
Строк: 208
<?php
// Generated by CoffeeScript 1.7.1

/*
  Various useful methods
  
  @class bkcore.Utils
  @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
 */

(function() {
  var 
Utilsexports;

  
Utils = (function() {

    
/*
      Creates a bkcore.threejs.Shaders["normalV"|"normal"] material
      with given parameters
     */
    
function Utils() {}

    
Utils.createNormalMaterial = function(opts) {
      var 
materialparametersshadershadernameuniforms;
      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 = {
        
fragmentShadershader.fragmentShader,
        
vertexShadershader.vertexShader,
        
uniformsuniforms,
        
lightstrue,
        
fogfalse
      
};
      
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(objectcamera) {
      var 
clPosmat;
      
mat = new THREE.Matrix4();
      
mat.multiply(camera.matrixWorldInverseobject.matrixWorld);
      
mat.multiply(camera.projectionMatrixmat);
      
mat.n44;
      
lPos = new THREE.Vector3(mat.n14 cmat.n24 cmat.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(
mkeyval) {
            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(0this.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(idcssclassactive) {
      var 
e;
      
document.getElementById(id);
      if (
== 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(urlpostDatacallbackdata) {
      var 
XMLHttpFactoriescreateXMLHTTPObjectimethodqdatareqval;
      
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 
eixmlhttp_i_ref;
        
xmlhttp false;
        for (
_i 0_ref XMLHttpFactories.length<= _ref _i <= _ref _i >= _ref<= _ref ? ++_i : --_i) {
          try {
            
xmlhttp XMLHttpFactories[i]();
          } catch (
_error) {
            
_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 += "&" "=" val;
          if (
postData != null) {
            
url += "?" qdata;
          }
        }
      }
      
req.open(methodurltrue);
      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);
?>
Онлайн: 2
Реклама