1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5function verifyWorldDescription(description) { 6 var shapes = description['shapes']; 7 var bodies = description['bodies']; 8 //var constraints = description['constraints']; 9 10 var i; 11 var r; 12 for (i = 0; i < shapes.length; i++) { 13 r = verifyShapeDescription(shapes[i]); 14 if (r == false) { 15 return false; 16 } 17 } 18 19 for (i = 0; i < bodies.length; i++) { 20 r = verifyBodyDescription(bodies[i], shapes); 21 if (r == false) { 22 return false; 23 } 24 } 25 26 return true; 27} 28 29function verifyShapeExists(name, shapes) { 30 var i; 31 for (i = 0; i < shapes.length; i++) { 32 if (shapes[i].name == name) { 33 return true; 34 } 35 } 36 return false; 37} 38 39function verifyBodyDescription(body, shapes) { 40 var shapeName = body['shape']; 41 var mass = body['mass']; 42 var friction = body['friction']; 43 var transform = body['transform']; 44 if (shapeName == undefined) { 45 console.log('Body needs a shapename.'); 46 return false; 47 } 48 if (mass == undefined) { 49 console.log('Body needs a mass.'); 50 return false; 51 } 52 if (friction == undefined) { 53 console.log('Body needs a friction.'); 54 return false; 55 } 56 if (transform == undefined) { 57 console.log('Body needs a transform.'); 58 return false; 59 } 60 if (transform[0] == undefined) { 61 console.log('Body needs a transform array.'); 62 return false; 63 } 64 return verifyShapeExists(shapeName, shapes); 65} 66 67function verifyShapeDescription(shape) { 68 if (shape['name'] == undefined) { 69 console.log('Shape needs a name.'); 70 return false; 71 } 72 73 var type = shape['type']; 74 75 if (type != "cube" && 76 type != "sphere" && 77 type != "cylinder" && 78 type != "convex") { 79 console.log('Shape type - ' + type + ' not supported.'); 80 return false; 81 } 82 83 if (type == "cube") { 84 return verifyCubeDescription(shape); 85 } 86 87 if (type == "sphere") { 88 return verifySphereDescription(shape); 89 } 90 91 if (type == "cylinder") { 92 return verifyCylinderDescription(shape); 93 } 94 95 if (type == "convex") { 96 return verifyConvexDescription(shape); 97 } 98 99 return false; 100} 101 102function verifyCubeDescription(shape) { 103 if (shape['wx'] == undefined) { 104 return false; 105 } 106 if (shape['wy'] == undefined) { 107 return false; 108 } 109 if (shape['wz'] == undefined) { 110 return false; 111 } 112 return true; 113} 114 115function verifySphereDescription(shape) { 116 if (shape['radius'] == undefined) { 117 return false; 118 } 119 return true; 120} 121 122function verifyCylinderDescription(shape) { 123 if (shape['radius'] == undefined) { 124 return false; 125 } 126 if (shape['height'] == undefined) { 127 return false; 128 } 129 return true; 130} 131 132function verifyConvexDescription(shape) { 133 if (shape['points'] == undefined) { 134 return false; 135 } 136 if (shape['points'][0] == undefined) { 137 return false; 138 } 139 return true; 140} 141