document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. (function r(f){/in/(document.readyState)?setTimeout(r,9,f):f()})(function(){
  2.  
  3.     var stage, stats, timer, sprite, light;
  4.     var frameRate = 60;
  5.     var m,t,cubeMaterials = [];
  6.     var el = document.getElementById("three-stage");
  7.     var isDown, dragPoint, startAngle, tween;
  8.  
  9.     //ステージ
  10.     var stage = new FieldStage(el, 520, 390, {x:21, y:7, z:21}, false);
  11.     stage.distance = 1000;
  12.  
  13.     //get material
  14.     function getMaterial(texture){
  15.         if(stage.useWebgl()){
  16.             return new THREE.MeshLambertMaterial({map: texture});
  17.         }
  18.         return new THREE.MeshBasicMaterial({map: texture});
  19.     };
  20.  
  21.     //cycle engine
  22.     function update(){
  23.         TWEEN.update();
  24.         stage.update();
  25.         stats.update();
  26.         stage.getRenderer().render(stage.getScene(), stage.getCamera());
  27.     };
  28.  
  29.  
  30.     //Cubeの各面のマテリアル
  31.     //No.1
  32.     m = getMaterial(THREE.ImageUtils.loadTexture(\'images/texture001.png\'));
  33.     t = getMaterial(THREE.ImageUtils.loadTexture(\'images/texture001_top.png\'));
  34.     cubeMaterials.push([
  35.         m, // right
  36.         m, // left
  37.         t, // top
  38.         m, // bottom
  39.         m, // back
  40.         m  // front
  41.     ]);
  42.  
  43.     //No.2
  44.     t = getMaterial(THREE.ImageUtils.loadTexture(\'images/texture002_top.png\'));
  45.     cubeMaterials.push([
  46.         m, // right
  47.         m, // left
  48.         t, // top
  49.         m, // bottom
  50.         m, // back
  51.         m  // front
  52.     ]);
  53.  
  54.     //No.3
  55.     t = getMaterial(THREE.ImageUtils.loadTexture(\'images/texture003_top.png\'));
  56.     cubeMaterials.push([
  57.         m, // right
  58.         m, // left
  59.         t, // top
  60.         m, // bottom
  61.         m, // back
  62.         m  // front
  63.     ]);
  64.  
  65.  
  66.     //フィールドデータ生成
  67.     var mtx = new FieldGenerator(11, 11)
  68.                 .add("h", [0.5, 0.4, 0.08, 0.02])
  69.                 .add("t", [0.3, 0.5, 0.2])
  70.                 .get();
  71.     stage.makeWalls(mtx, cubeMaterials);
  72.  
  73.     //ライティング (webgl only)
  74.     var defLight = new THREE.AmbientLight(0x333333);
  75.     stage.getScene().addLight(defLight);
  76.     light = new THREE.PointLight(0xFFFFFF, 3, 250);
  77.     light.position.set(0, 150, 0);
  78.     stage.getScene().addLight(light);
  79.  
  80.     //mouse events
  81.     $(el).mousedown(function(e){
  82.         e.preventDefault();
  83.         dragPoint = new THREE.Vector2(e.pageX, e.pageY);
  84.         startAngle = stage.cameraAngle3.clone();
  85.         if(tween) tween.stop();
  86.         isDown = true;
  87.     });
  88.     $(el).mousewheel(function(e, delta){
  89.         e.preventDefault();
  90.         stage.distance += delta * 100;
  91.         stage.distance = Math.max(Math.min(stage.distance, 1800), 400);
  92.     });
  93.     $(document).mouseup(function(e){
  94.         isDown = false;
  95.         var xx = stage.cameraAngle3.x + 45;
  96.         xx = Math.round(xx/90) * 90 - 45;
  97.         var yy = Math.floor(stage.cameraAngle3.y/5) * 5;
  98.         yy = Math.min(Math.max(yy, 15), 50);
  99.         tween = new TWEEN.Tween(stage.cameraAngle3)
  100.             .to({
  101.                 x: xx,
  102.                 y: yy,
  103.                 z: xx
  104.             }, 1000)
  105.             .easing(TWEEN.Easing.Elastic.EaseOut)
  106.             .start();
  107.     });
  108.     $(document).mousemove(function(e){
  109.         if(isDown){
  110.             stage.cameraAngle3.x = (dragPoint.x - e.pageX) / 5 + startAngle.x;
  111.             stage.cameraAngle3.y = (e.pageY - dragPoint.y) / 10 + startAngle.y;
  112.             stage.cameraAngle3.y = Math.min(Math.max(stage.cameraAngle3.y, 10), 55);
  113.             stage.cameraAngle3.z = (dragPoint.x - e.pageX) / 5 + startAngle.z;
  114.         }
  115.     });
  116.  
  117.  
  118.     //Stats SetUp
  119.     stats = new Stats();
  120.     stats.domElement.style.position = \'absolute\';
  121.     stats.domElement.style.top = \'0px\';
  122.     stats.domElement.style.zIndex = 100;
  123.     el.appendChild(stats.domElement);
  124.     document.getElementById("renderer").innerHTML = stage.useWebgl() ? "WebGLRenderer" : "CanvasRenderer" ;
  125.  
  126.     //cycle engine start
  127.     timer = setInterval(update, 1000 / frameRate);
  128. });
');