Advertisement
seacloud9

Untitled

Dec 18th, 2011
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DOC location : http://i-create.org/JavaScript/jiglib/
  2.  
  3. <!DOCTYPE HTML>
  4. <html lang="en">
  5.     <head>
  6.         <title>Pirate Island</title>
  7.         <meta charset="utf-8">
  8.          <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
  9.          <script type="text/javascript" src="js/Three.js"></script>
  10.          <script type="text/javascript" src="js/ThreeExtras.js"></script>
  11.          <!--<script type="text/javascript" src="js/glge-compiled-min.js"></script>-->
  12.          <script type="text/javascript" src="js/binaryReader.js"></script>
  13.          <script type="text/javascript" src="js/MD2.js"></script>
  14.          <script type="text/javascript" src="js/Detector.js"></script>
  15.          <script type="text/javascript" src="js/RequestAnimationFrame.js"></script>
  16.          <script type="text/javascript" src="js/Stats.js"></script>
  17.          <script type="text/javascript" src="js/jiglib/geom/glMatrix.js"></script>                         
  18.          
  19.        
  20.         <script type="text/javascript" src="js/jiglib/jiglib.js"></script>
  21.        
  22.         <script type="text/javascript" src="js/jiglib/geom/Vector3D.js"></script>
  23.         <script type="text/javascript" src="js/jiglib/geom/Matrix3D.js"></script>
  24.        
  25.         <script type="text/javascript" src="js/jiglib/math/JMatrix3D.js"></script>
  26.         <script type="text/javascript" src="js/jiglib/math/JMath3D.js"></script>
  27.         <script type="text/javascript" src="js/jiglib/math/JNumber3D.js"></script>
  28.        
  29.         <script type="text/javascript" src="js/jiglib/cof/JConfig.js"></script>
  30.         <script type="text/javascript" src="js/jiglib/data/CollOutData.js"></script>
  31.         <script type="text/javascript" src="js/jiglib/data/ContactData.js"></script>
  32.         <script type="text/javascript" src="js/jiglib/data/PlaneData.js"></script>
  33.         <script type="text/javascript" src="js/jiglib/data/EdgeData.js"></script>
  34.         <script type="text/javascript" src="js/jiglib/data/TerrainData.js"></script>
  35.         <script type="text/javascript" src="js/jiglib/geometry/JAABox.js"></script>
  36.         <script type="text/javascript" src="js/jiglib/data/OctreeCell.js"></script>
  37.         <script type="text/javascript" src="js/jiglib/data/CollOutBodyData.js"></script>
  38.         <script type="text/javascript" src="js/jiglib/data/TriangleVertexIndices.js"></script>
  39.         <script type="text/javascript" src="js/jiglib/data/SpanData.js"></script>
  40.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraint.js"></script>
  41.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintMaxDistance.js"></script>
  42.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintWorldPoint.js"></script>
  43.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintPoint.js"></script>
  44.         <script type="text/javascript" src="js/jiglib/physics/MaterialProperties.js"></script>
  45.         <script type="text/javascript" src="js/jiglib/geometry/JTriangle.js"></script>
  46.         <script type="text/javascript" src="js/jiglib/geometry/JSegment.js"></script>
  47.         <script type="text/javascript" src="js/jiglib/collision/CollPointInfo.js"></script>
  48.         <script type="text/javascript" src="js/jiglib/collision/CollisionInfo.js"></script>
  49.         <script type="text/javascript" src="js/jiglib/collision/CollDetectInfo.js"></script>
  50.         <script type="text/javascript" src="js/jiglib/collision/CollDetectFunctor.js"></script>
  51.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxTerrain.js"></script>
  52.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereMesh.js"></script>
  53.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleBox.js"></script>
  54.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereCapsule.js"></script>
  55.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleTerrain.js"></script>
  56.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereBox.js"></script>
  57.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereTerrain.js"></script>
  58.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxBox.js"></script>
  59.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxMesh.js"></script>
  60.         <script type="text/javascript" src="js/jiglib/collision/CollDetectBoxPlane.js"></script>
  61.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsuleCapsule.js"></script>
  62.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSphereSphere.js"></script>
  63.         <script type="text/javascript" src="js/jiglib/collision/CollDetectSpherePlane.js"></script>
  64.         <script type="text/javascript" src="js/jiglib/collision/CollDetectCapsulePlane.js"></script>
  65.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemAbstract.js"></script>
  66.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemGridEntry.js"></script>
  67.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemGrid.js"></script>
  68.         <script type="text/javascript" src="js/jiglib/collision/CollisionSystemBrute.js"></script>
  69.         <script type="text/javascript" src="js/jiglib/geometry/JIndexedTriangle.js"></script>
  70.         <script type="text/javascript" src="js/jiglib/geometry/JOctree.js"></script>
  71.         <script type="text/javascript" src="js/jiglib/geometry/JRay.js"></script>
  72.         <script type="text/javascript" src="js/jiglib/events/JCollisionEvent.js"></script>
  73.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraint.js"></script>
  74.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintMaxDistance.js"></script>
  75.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintWorldPoint.js"></script>
  76.         <script type="text/javascript" src="js/jiglib/physics/constraint/JConstraintPoint.js"></script>
  77.         <script type="text/javascript" src="js/jiglib/physics/PhysicsController.js"></script>
  78.         <script type="text/javascript" src="js/jiglib/physics/CachedImpulse.js"></script>
  79.         <script type="text/javascript" src="js/jiglib/physics/HingeJoint.js"></script>
  80.         <script type="text/javascript" src="js/jiglib/physics/BodyPair.js"></script>
  81.         <script type="text/javascript" src="js/jiglib/physics/PhysicsState.js"></script>
  82.         <script type="text/javascript" src="js/jiglib/physics/PhysicsSystem.js"></script>
  83.         <script type="text/javascript" src="js/jiglib/physics/RigidBody.js"></script>
  84.         <script type="text/javascript" src="js/jiglib/geometry/JSphere.js"></script>
  85.         <script type="text/javascript" src="js/jiglib/geometry/JTriangleMesh.js"></script>
  86.         <script type="text/javascript" src="js/jiglib/geometry/JPlane.js"></script>
  87.         <script type="text/javascript" src="js/jiglib/geometry/JTerrain.js"></script>
  88.         <script type="text/javascript" src="js/jiglib/geometry/JBox.js"></script>
  89.         <script type="text/javascript" src="js/jiglib/geometry/JCapsule.js"></script>
  90.         <script type="text/javascript" src="js/jiglib/debug/Stats.js"></script>
  91.        
  92.         <script type="text/javascript" src="js/jiglib/vehicles/JChassis.js"></script>
  93.         <script type="text/javascript" src="js/jiglib/vehicles/JWheel.js"></script>
  94.         <script type="text/javascript" src="js/jiglib/vehicles/JCar.js"></script>
  95.          
  96.    
  97.          <style type="text/css">
  98.             body{width:100%;height:100%; margin:0px}
  99.             /*canvas{width:100%;height:100%}*/
  100.             /*#container{width:100%;height:100%}*/
  101.          </style>
  102.     </head>
  103.     <body>
  104.         <div id="container"></div>
  105.         <script type="text/javascript">
  106.             if ( ! Detector.webgl ) {
  107.                 Detector.addGetWebGLMessage();
  108.                 document.getElementById( 'container' ).innerHTML = "";
  109.             }
  110.            
  111.             //global variables
  112.             var container;
  113.             var camera, controls, scene, renderer, loader, cameraCube, meshC, meshCl, island, projector, system;
  114.             var mesh, texture,geometry, material, water, textureW, materialW, meshW, meshC, cubeTarget, sphere;
  115.             var worldWidth = 128, worldDepth = 128, sceneCube;
  116.             worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;
  117.             var t0 = new Date().getTime();
  118.             var clock = new THREE.Clock();
  119.            
  120.             function startGame(){
  121.                 gameOn = true;
  122.                 init();
  123.                 animate();
  124.             }
  125.            
  126.             function init_jiglib(){
  127.                 system = jiglib.PhysicsSystem.getInstance();
  128.                 system.setGravity([0,-5200,0, 0]);//-120
  129.                 system.setCollisionSystem(true, 200000, 200000, 200000, 200000, 200000, 200000, 200000, 200000, 200000); // CollisionSystemGrid
  130.                 system.setSolverType('FAST');//FAST, NORMAL, ACCUMULATED
  131.                 /*var ground = new jiglib.JPlane();
  132.                 ground.set_y(-100);
  133.                 ground.set_rotationX(90);
  134.                 ground.set_movable(false);             
  135.                 system.addBody( ground );*/
  136.  
  137.                
  138.                 startGame();   
  139.             }
  140.            
  141.             function init() {
  142.                
  143.                 projector = new THREE.Projector();
  144.                 loader = new THREE.JSONLoader( true );
  145.                 container = document.getElementById( 'container' );
  146.                 camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 20000 );
  147.                 camera.position.x = -130;
  148.                 camera.position.y = 189;
  149.                 camera.position.z = -12;
  150.                 cameraCube = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 100000 );
  151.                 cubeTarget = new THREE.Vector3( 0, 0, 0 );
  152.                 controls = new THREE.FirstPersonControls( camera );
  153.                 controls.movementSpeed = 100;
  154.                 controls.lookSpeed = 0.02;
  155.                 sceneCube = new THREE.Scene()
  156.                 scene = new THREE.Scene();
  157.                 scene.fog = new THREE.FogExp2( 0xaaccff, 0.0007 );
  158.                 //camera.target.position.z = - 0;
  159.                 //camera.position.y = 220;
  160.                 //camera.position.x = 240;
  161.                 //camera.position.z = 240;
  162.                 //camera.target.position.y = camera.position.y;
  163.                 //cameraCube = new THREE.Camera( 60, window.innerWidth / window.innerHeight, 1, 100000 );
  164.                 throwShit();
  165.                 var radius = Math.random() * 40 / 2;
  166.                 materialCl = new THREE.MeshNormalMaterial();
  167.                 var geometryCl = new THREE.SphereGeometry( radius, 2000, 20 );
  168.                 meshCl = new THREE.Mesh( geometryCl, materialCl );
  169.                 meshCl.matrixAutoUpdate = false;
  170.                 meshCl.overdraw = true;                
  171.                 meshCl.position.x = -130;
  172.                 meshCl.position.y = 189;
  173.                 meshCl.position.z = -12;
  174.                 console.log(meshCl);
  175.                 scene.add( meshCl );
  176.        
  177.                 sphere = new jiglib.JSphere( null, radius );
  178.                 sphere.set_mass( 4 / 30 * Math.PI * Math.pow( radius, 3 ) );
  179.                 sphere.moveTo( new Vector3D( meshCl.position.x, meshCl.position.y, meshCl.position.z, 0 ) );
  180.                 system.addBody( sphere );
  181.                 meshCl.rigidBody = sphere;
  182.                 var path = "assets/skybox/";
  183.                 var format = '.jpg';
  184.                 var urls = [
  185.                     path + 'px' + format, path + 'nx' + format,
  186.                     path + 'py' + format, path + 'ny' + format,
  187.                     path + 'pz' + format, path + 'nz' + format
  188.                 ];
  189.  
  190.                 var textureCube = THREE.ImageUtils.loadTextureCube( urls );
  191.                
  192.                 var shader = THREE.ShaderUtils.lib[ "cube" ];
  193.                 shader.uniforms[ "tCube" ].texture = textureCube;
  194.  
  195.                 var material = new THREE.ShaderMaterial( {
  196.                     fragmentShader: shader.fragmentShader,
  197.                     vertexShader: shader.vertexShader,
  198.                     uniforms: shader.uniforms
  199.                 } ),
  200.                
  201.                 meshC = new THREE.Mesh( new THREE.CubeGeometry( 200000, 200000, 200000 ), material );
  202.                 meshC.flipSided = true;
  203.                
  204.                 //sceneCube.add( meshC );
  205.                 //var myModel=new GLGE.MD2;
  206.                 //myModel.setSrc("assets/test/tris.md2");
  207.                 //console.log(myModel);
  208.                 md = new MD2("assets/test/tris.md2");
  209.                 var textureW = THREE.ImageUtils.loadTexture( "assets/shipwreck/textures/water.jpg" );
  210.                 textureW.wrapS = textureW.wrapT = THREE.RepeatWrapping;
  211.                 textureW.repeat.set( 5, 5 );
  212.                 //md_mesh = new THREE.Mesh( md, new THREE.MeshBasicMaterial( { color: 0x0044ff, map: textureW } ) );
  213.                 //md.material = textureW;
  214.                 md_mesh = new THREE.Mesh( md, getMaterial("assets/test/Ratamahatta.jpg") );
  215.                
  216.                 md_mesh.rotation.y = -1.57;
  217.                 md_mesh.position.x = -145;
  218.                 md_mesh.position.z = -12;
  219.                 md_mesh.geometry.dynamic = true;
  220.                 md_mesh.autoUpdateMatrix = false;
  221.                 scene.add( md_mesh );
  222.                 md_mesh.position.y = 189;
  223.                 md_mesh.scale.x = 0.2, md_mesh.scale.y = 0.2, md_mesh.scale.z = 0.2;
  224.                 changeAnim("stand");
  225.                 document.body.appendChild( loader.statusDomElement );
  226.                 scene.add( new THREE.AmbientLight( 0xeef103 ) );
  227.                 spotLight = new THREE.SpotLight( 0xffddbb, 8.15 );
  228.                 spotLight.position.set( 500, 2000, 0 );
  229.                 spotLight.castShadow = true;
  230.                 scene.add( spotLight );
  231.                 loader.load( "assets/shipwreck/shipwreck.js", createScene );
  232.                
  233.                
  234.                 function createScene( geometry ) {
  235.                     //console.log(geometry)
  236.                     island = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial() );
  237.                     island.overdraw = true;
  238.                     island.matrixAutoUpdate = false;
  239.                     island.geometry.dynamic = true;
  240.                     island.geometry.__dirtyVertices = true;
  241.                     island.autoUpdateMatrix = false;
  242.                     //island.rigidBody.set_mass(500);
  243.                     /*var ground = new jiglib.JTerrain(island);
  244.                     ground.set_friction(10);
  245.                     system.addBody(ground);
  246.                     ground.moveTo([0,-650,0,0]);*/
  247.                    
  248.                     scene.add( island );
  249.                     //var triangleMesh = new jiglib.JTriangleMesh(island.geometry,new Vector3D(island.position.x,island.position.y,island.position.z,0 ),new jiglib.Matrix3D(),10,10);
  250.                     var triangleMesh = getPhysicalBody(island.geometry,[island.position.x,island.position.y,island.position.z,0]);
  251.                     triangleMesh.set_movable(false);
  252.                     triangleMesh.set_mass(500);
  253.                    
  254.                     triangleMesh.set_friction(0.2);
  255.                     triangleMesh.set_restitution(0.9);
  256.                     system.addBody(triangleMesh);
  257.                     island.rigidBody = triangleMesh;
  258.                     //island.rigidBody.enableCollisions(triangleMesh);
  259.                    
  260.                 }
  261.  
  262.            
  263.                 water = new THREE.PlaneGeometry( 20000, 20000, worldWidth - 1, worldDepth - 1 );
  264.                 water.dynamic = true;
  265.  
  266.                 var i, j, il, jl;
  267.  
  268.                 for ( i = 0, il = water.vertices.length; i < il; i ++ ) {
  269.  
  270.                                     water.vertices[ i ].position.z = 35 * Math.sin( i/2 );
  271.  
  272.                 }
  273.  
  274.  
  275.  
  276.                 water.computeFaceNormals();
  277.                 water.computeVertexNormals();
  278.  
  279.                 var textureW = THREE.ImageUtils.loadTexture( "assets/shipwreck/textures/water.jpg" );
  280.                 textureW.wrapS = textureW.wrapT = THREE.RepeatWrapping;
  281.                 textureW.repeat.set( 5, 5 );
  282.  
  283.                 materialW = new THREE.MeshBasicMaterial( { color: 0x0044ff, map: textureW } );
  284.  
  285.                 meshW = new THREE.Mesh( water, materialW );
  286.                 meshW.rotation.x = - 90 * Math.PI / 180;
  287.                 meshW.position.y = 145;
  288.                 scene.add( meshW );
  289.                
  290.                 //render all the cool stuff
  291.                 renderer = new THREE.WebGLRenderer( { antialias: false,  clearColor: 0xaaccff, clearAlpha: 1} );
  292.                 renderer.setSize( window.innerWidth, window.innerHeight );
  293.                 //renderer.autoClear = false;
  294.                 renderer.setFaceCulling(0);
  295.                 container.innerHTML = "";
  296.                 container.appendChild( renderer.domElement );
  297.                 stats = new Stats();
  298.                 stats.domElement.style.position = 'absolute';
  299.                 stats.domElement.style.top = '0px';
  300.                 container.appendChild( stats.domElement );
  301.                 document.addEventListener( 'mousedown', onDocumentMouseDown, false );
  302.             }
  303.        
  304.            
  305.             // this is the main game loop where most of the magic happens
  306.             function animate() {
  307.                 if(gameOn === true){
  308.                    
  309.                     requestAnimationFrame( animate );
  310.                     updateDynamicsWorld();
  311.                     render();
  312.                     stats.update();
  313.                 }
  314.             }
  315.            
  316.             function getMaterial (texture) {
  317.                 //var material = new THREE.MeshPhongMaterial( { map: new THREE.ImageUtils.loadTexture( texture ), ambient: 0xDEDEDE, specular: 0xAAAAAA, shading: THREE.SmoothShading } );     
  318.                
  319.                 var material = new THREE.MeshPhongMaterial( { ambient: 0x030303, color: 0x030303, specular: 0x990000, shininess: 30 } )
  320.                 /*var img = new Image();
  321.                 material.map.image = img;
  322.                 img.onload = function () {
  323.                     material.map.image.loaded = 1;
  324.                 };
  325.                 img.src = texture;*/
  326.  
  327.                 return material;
  328.             }
  329.            
  330.             function render() {
  331.                 var time = new Date().getTime() * 0.01;
  332.                
  333.                
  334.                 var delta = clock.getDelta(),
  335.                 time = clock.getElapsedTime() * 10;
  336.  
  337.                 for ( var i = 0, l = water.vertices.length; i < l; i ++ ) {
  338.  
  339.                         water.vertices[ i ].position.z = 5 * Math.sin( i / 5 + ( time + i ) / 7 );
  340.  
  341.                 }
  342.  
  343.                
  344.                 meshW.geometry.__dirtyVertices = true;
  345.                 controls.update( delta );
  346.                 cubeTarget.x = - camera.position.x;
  347.                 cubeTarget.y = - camera.position.y;
  348.                 cubeTarget.z = - camera.position.z;
  349.                 md.update(60);
  350.                 // mark as dirty for update, thanks to alteredq :)
  351.                 md.__dirtyVertices = true; 
  352.                
  353.                 /*try{
  354.                     meshCl.position.x = camera.position.x;
  355.                     meshCl.position.y = camera.position.y;
  356.                     meshCl.position.z = camera.position.z;
  357.                 }catch(e){
  358.                
  359.                 }*/
  360.                
  361.                 //renderer.clear();
  362.                 renderer.render( sceneCube, cameraCube );
  363.                 renderer.render(scene, camera);
  364.                
  365.             }
  366.            
  367.                 jQuery(document).ready(function() {
  368.                     init_jiglib();
  369.                 });
  370.                
  371.             function changeAnim(label) {
  372.                 if (label == "stop") {
  373.                     md.stop();
  374.                     //mdw.stop();
  375.                     return;
  376.                 }
  377.                 md.gotoAndPlay(label, true);
  378.                 //mdw.gotoAndPlay(label, true);
  379.             }  
  380.             function updateDynamicsWorld() {
  381.                 //sphere.moveTo( new Vector3D( meschCl.position.x, meschCl.position.y, meschCl.position.z, 0 ) );
  382.                 var t1 = new Date().getTime();
  383.                 var ms = t1 - t0;
  384.                 t0 = t1;
  385.                
  386.                
  387.                 system.integrate( ms / 500 );              
  388.                
  389.                 for ( var i = 0, l = scene.objects.length; i < l; i ++ ) {
  390.  
  391.                     var mesh = scene.objects[i];
  392.  
  393.                     if (mesh.rigidBody) {
  394.  
  395.                         var pos = mesh.rigidBody.get_currentState().position;
  396.                         var dir = mesh.rigidBody.get_currentState().orientation.get_rawData();
  397.  
  398.                         var matrix = new THREE.Matrix4();
  399.                         matrix.setTranslation( pos.x, pos.y, pos.z );
  400.                         var rotate = new THREE.Matrix4(dir[0], dir[1], dir[2], dir[3], dir[4], dir[5], dir[6], dir[7], dir[8], dir[9], dir[10], dir[11], dir[12], dir[13], dir[14], dir[15]);
  401.                         matrix.multiplySelf(rotate);
  402.  
  403.  
  404.                         mesh.matrix = matrix;
  405.                         mesh.matrixWorldNeedsUpdate = true;
  406.                         //mesh.update(false, true, camera);
  407.  
  408.                        
  409.                     }
  410.                    
  411.                    
  412.                 }
  413.            
  414.            
  415.            
  416.             }
  417.            
  418.             function getPhysicalBody(threeGeometry,initPos)
  419.             {
  420.                 var vertices = [];
  421.                 var indices = [];
  422.            
  423.                 for (i = 0; i < threeGeometry.vertices.length; i++) {
  424.                     var vert_x = threeGeometry.vertices[i].position.x;
  425.                     var vert_y = threeGeometry.vertices[i].position.y;
  426.                     var vert_z = threeGeometry.vertices[i].position.z;
  427.                     vertices.push(new Vector3D(island.position.x,island.position.y,island.position.z,0 ));
  428.                 }
  429.            
  430.                 /*for (i = 0; i < 4; i++) {
  431.                     var x = threeGeometry.faces[i];
  432.                     for (j = 0; j < 4; j++)
  433.                     {
  434.                         var t = { i0: x.a };
  435.                         t.i1 = x.b;
  436.                         t.i2 = x.c;
  437.                         t.i3 = x.d;
  438.                         indices.push(t);
  439.                     }
  440.                 }*/
  441.                 for (i = 0; i < threeGeometry.faces.length; i++) {
  442.                     var face = threeGeometry.faces[ i ];
  443.                     var t = {i0:0, i1:0};
  444.                     if ( face instanceof THREE.Face3 ) {
  445.                         t.i0 = face.a;
  446.                         t.i1 = face.b;
  447.                         t.i2 = face.c;
  448.                         indices.push( t );
  449.                     } else if ( face instanceof THREE.Face4 ) {
  450.                         t.i0 = face.a;
  451.                         t.i1 = face.b;
  452.                         t.i2 = face.d;
  453.                         indices.push( t );
  454.                         t.i0 = face.b;
  455.                         t.i1 = face.c;
  456.                         t.i2 = face.d;
  457.                         indices.push( t );
  458.                     }
  459.                 }
  460.                 //console.log(indices);
  461.                 var skin = { vertices: vertices, indices: indices };
  462.                 var pos = new Vector3D(island.position.x,island.position.y,island.position.z,0 );
  463.                 var rot = new jiglib.Matrix3D();
  464.                 var body = new jiglib.JTriangleMesh(skin, pos, rot, 200, 10);
  465.                 return body;        
  466.             }
  467.            
  468.            
  469.             function throwShit(){
  470.             material_ = new THREE.MeshNormalMaterial();
  471.  
  472.                 //var ground = new THREE.Mesh( new Cube( 40, 0, 40 ), material );
  473.                 //ground.position.x = 0;
  474.                 //ground.position.y = -10;
  475.                 //ground.position.z = 0;
  476.                 //scene.addObject( ground );               
  477.                
  478.                 for ( var i = 0; i < 20; i ++ ) {
  479.  
  480.                     if (Math.random() > .5) {
  481.  
  482.                         var width = Math.random() * 4;
  483.                         var height = Math.random() * 4;
  484.                         var depth = Math.random() * 4;
  485.                    
  486.                         var geometryCC = new THREE.CubeGeometry( width, height, depth );
  487.                         var meshCC = new THREE.Mesh( geometryCC, material_ );
  488.                         //meshC = new THREE.Mesh( new THREE.CubeGeometry( 200000, 200000, 200000 ), material );
  489.                         meshCC.matrixAutoUpdate = false;
  490.                         meshCC.overdraw = true;                
  491.                        
  492.                         meshCC.position.x = -130;
  493.                         meshCC.position.y = 250;
  494.                         meshCC.position.z = -12;
  495.    
  496.                         scene.add( meshCC );
  497.        
  498.                         var cube = new jiglib.JBox( null, width, depth, height );
  499.                         cube.set_mass( width * height * depth );
  500.                         cube.moveTo( new Vector3D( meshCC.position.x, meshCC.position.y, meshCC.position.z, 0 ) );
  501.                         system.addBody( cube );                    
  502.                         meshCC.rigidBody = cube;
  503.                         console.log(meshCC.position);
  504.                     } else {
  505.                        
  506.                         var radius = Math.random() * 4 / 2;
  507.                    
  508.                         var geometryCC = new THREE.SphereGeometry( radius, 5, 5 );
  509.                         var meshCC = new THREE.Mesh( geometryCC, material_ );
  510.    
  511.                         meshCC.matrixAutoUpdate = false;
  512.                         meshCC.overdraw = true;                
  513.                        
  514.                         meshCC.position.x = -130;
  515.                         meshCC.position.y = 189;
  516.                         meshCC.position.z = -12;
  517.                         console.log(meshCC.position);
  518.                         scene.add( meshCC );
  519.        
  520.                         var spheres = new jiglib.JSphere( null, radius );
  521.                         spheres.set_mass( 4 / 3 * Math.PI * Math.pow( radius, 3 ) );
  522.                         spheres.moveTo( new Vector3D( meshCC.position.x, meshCC.position.y, meshCC.position.z, 0 ) );
  523.                         system.addBody( spheres );
  524.                        
  525.                         meshCC.rigidBody = spheres;
  526.                                                
  527.                     }
  528.  
  529.                 }
  530.                
  531.             }
  532.            
  533.             function onDocumentMouseDown( event ) {
  534.  
  535.                 event.preventDefault();
  536.  
  537.                 var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
  538.                 projector.unprojectVector( vector, camera );
  539.  
  540.                 var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
  541.  
  542.                 var intersects = ray.intersectScene( scene );
  543.  
  544.                 if ( intersects.length > 0 ) {
  545.  
  546.                     var object = intersects[ 0 ].object;
  547.                    
  548.                     if ( object.rigidBody ) {
  549.                        
  550.                         object.rigidBody.setLineVelocity( new Vector3D( 0, -20, 0 ), false );
  551.  
  552.                     }
  553.  
  554.                 }
  555.  
  556.             }
  557.            
  558.         </script>
  559.     </body>
  560. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement