So why am I getting ‘Uncaught TypeError: Cannot read property ‘createStaticConvexHull’ of undefined’ when I clearly have included the ‘AmmoUtils.js’ file in the project & call it like this?
var body = Ammo.Utils.createStaticConvexHull( points, x, y, z, yaw, 0, 0 );
These are my function{s} :
function setupStaticObjects ( )
{
var loadBatch = [
{ name: 'container', url:'models/environment/29palms/shippingcontainer.js' },
{ name: 'collision', url:'models/environment/29palms/collision_shippingcontainer.js' },
{ name: 'barrel', url:'models/environment/29palms/barrel.js' }
];
THREEx.Utils.batchLoadJSON( loadBatch, function( results ) {
var crateGeom = results['container'].geometry;
var barrelGeom = results['barrel'].geometry;
var crateCollision = results['collision'].geometry;
var crateMat = results['container'].materials[ 0 ];
var barrelMat = results['barrel'].materials[ 0 ];
var angle = Math.PI / 2;
var angle = 2*Math.PI;
var degrees = 360;
var getAngle = function ( degrees ) {
var angle = 2 * Math.PI;
return angle * ( degrees / 360 );
};
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 50, 100, 50, getAngle(10));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 50, 100, 250, getAngle(90));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -200, 90, 200, getAngle(90));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -200, 96, 160, getAngle(90));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -200, 100, 120, getAngle(90));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -200, 100, 80, getAngle(90));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -50, 50, 40, getAngle(0));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 100, 100, 50 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 150, 100, 50 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 200, 100, 50 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 280, 110, 50, getAngle(45));
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 180, 110, -150 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 280, 110, -150, getAngle(90) );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 300, 110, -120, getAngle(90) );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 400, 110, -100, getAngle(0) );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 140, 110, -150 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 90, 115, -150 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, 0, 115, -170 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -50, 115, -190 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -70, 100, 30 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -120, 100, 60 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -160, 100, 55 );
setupStaticMeshObject( crateGeom, crateMat, crateCollision, -250, 100, 10 );
var barrelHeight = terrainMesh.geometry.getTerrainHeight( -50, 50 );
barrelMesh = setupStaticCylinderObject( barrelGeom, barrelMat, -50, barrelHeight, 50 );
});
}
function setupStaticMeshObject( renderGeometry, renderMaterial, collisionGeometry, x, y, z, yaw )
{
yaw = ( yaw != undefined ) ? yaw: 0;
var renderMesh = new THREE.Mesh( renderGeometry, renderMaterial );
renderMesh.castShadow = true;
renderMesh.receiveShadow = true;
renderMesh.position.set( x, y, z );
renderMesh.rotation.y = yaw;
scene.add( renderMesh );
var points = [];
for ( var i = 0; i < collisionGeometry.vertices.length; ++i ) {
points.push( collisionGeometry.vertices[ i ].x );
points.push( collisionGeometry.vertices[ i ].y );
points.push( collisionGeometry.vertices[ i ].z );
}
var body = Ammo.Utils.createStaticConvexHull( points, x, y, z, yaw, 0, 0 );
body.type = "crate";
physicsWorld.addRigidBody( body );
}