void AddTriangles(List <Triangle3> triangles, GameObject gameObject) { var colliders = gameObject.GetComponentsInChildren <Collider2D>(); foreach (var collider in colliders) { var transform = Matrix.FromGameTransform(collider.gameObject.transform); if (collider is BoxCollider2D) { var boxCollider = collider as BoxCollider2D; Vector3 goPosition; Quaternion goRotation; Vector3 goScale; Matrix.DecomposeMatrix(ref transform, out goPosition, out goRotation, out goScale); var collisionheight = 5; var size = new Vector3(boxCollider.size.x, collisionheight, boxCollider.size.y); Vector3 scale = Vector3.Scale(goScale, size); var boxCenterXZ = boxCollider.offset; var boxCenter = new Vector3(boxCenterXZ.x, 0, boxCenterXZ.y); Vector3 position = goPosition + goRotation * Vector3.Scale(boxCenter, goScale); transform = Matrix4x4.TRS(position, goRotation, scale); StaticMeshTriangleProvider.AddMeshTriangles(triangles, cubeVertices, cubeIndices, transform); } else if (collider is CircleCollider2D) { // TODO: Implement } } }
void AddTriangles(List <Triangle3> triangles, GameObject gameObject) { var colliders = gameObject.GetComponentsInChildren <Collider>(); foreach (var collider in colliders) { var transform = Matrix.FromGameTransform(collider.gameObject.transform); if (collider is BoxCollider) { var boxCollider = collider as BoxCollider; Vector3 goPosition; Quaternion goRotation; Vector3 goScale; Matrix.DecomposeMatrix(ref transform, out goPosition, out goRotation, out goScale); Vector3 scale = Vector3.Scale(goScale, boxCollider.size); Vector3 boxCenter = boxCollider.center; Vector3 position = goPosition + goRotation * Vector3.Scale(boxCenter, goScale); transform = Matrix4x4.TRS(position, goRotation, scale); StaticMeshTriangleProvider.AddMeshTriangles(triangles, cubeVertices, cubeIndices, transform); } else if (collider is MeshCollider) { var meshCollider = collider as MeshCollider; StaticMeshTriangleProvider.AddMeshTriangles(triangles, meshCollider.sharedMesh, transform); } else if (collider is SphereCollider) { // TODO: Implement } else if (collider is CapsuleCollider) { // TODO: Implement } } }