@@ -362,13 +362,7 @@ public void TestExportCamera(){
362
362
/// <param name="filename">Filename.</param>
363
363
/// <param name="cameraObj">Camera object.</param>
364
364
private Camera ExportCamera ( string filename , GameObject cameraObj ) {
365
- ModelExporter . ExportObject ( filename , cameraObj ) ;
366
-
367
- GameObject fbxObj = AssetDatabase . LoadMainAssetAtPath ( filename ) as GameObject ;
368
- var fbxCamera = fbxObj . GetComponent < Camera > ( ) ;
369
-
370
- Assert . IsNotNull ( fbxCamera ) ;
371
- return fbxCamera ;
365
+ return ExportComponent < Camera > ( filename , cameraObj ) ;
372
366
}
373
367
374
368
private void CompareCameraValues ( Camera camera , Camera fbxCamera , float delta = 0.001f ) {
@@ -378,6 +372,23 @@ private void CompareCameraValues(Camera camera, Camera fbxCamera, float delta=0.
378
372
Assert . AreEqual ( camera . farClipPlane , fbxCamera . farClipPlane , delta ) ;
379
373
}
380
374
375
+ /// <summary>
376
+ /// Exports the GameObject and returns component of type T.
377
+ /// </summary>
378
+ /// <returns>The component.</returns>
379
+ /// <param name="filename">Filename.</param>
380
+ /// <param name="obj">Object.</param>
381
+ /// <typeparam name="T">The component type.</typeparam>
382
+ private T ExportComponent < T > ( string filename , GameObject obj ) where T : Component {
383
+ ModelExporter . ExportObject ( filename , obj ) ;
384
+
385
+ GameObject fbxObj = AssetDatabase . LoadMainAssetAtPath ( filename ) as GameObject ;
386
+ var fbxComponent = fbxObj . GetComponent < T > ( ) ;
387
+
388
+ Assert . IsNotNull ( fbxComponent ) ;
389
+ return fbxComponent ;
390
+ }
391
+
381
392
[ Test ]
382
393
public void TestComponentAttributeExport ( )
383
394
{
@@ -396,17 +407,55 @@ public void TestComponentAttributeExport()
396
407
397
408
mesh . vertices = quadMesh . vertices ;
398
409
mesh . triangles = quadMesh . triangles ;
410
+ mesh . tangents = quadMesh . tangents ;
399
411
mesh . normals = quadMesh . normals ;
400
412
mesh . colors = quadMesh . colors ;
401
413
414
+ Assert . IsNotNull ( mesh . tangents ) ;
415
+ Assert . IsNotNull ( mesh . vertices ) ;
416
+ Assert . IsNotNull ( mesh . triangles ) ;
417
+ Assert . IsNotNull ( mesh . normals ) ;
418
+ Assert . IsNotNull ( mesh . colors ) ;
419
+
402
420
var gameObject = new GameObject ( ) ;
403
421
var meshFilter = gameObject . AddComponent < MeshFilter > ( ) ;
404
- gameObject . AddComponent < MeshRenderer > ( ) ;
405
422
406
423
meshFilter . sharedMesh = mesh ;
407
424
408
425
// don't need quad anymore
409
426
Object . DestroyImmediate ( quad ) ;
427
+
428
+ // try exporting default values
429
+ string filename = GetRandomFbxFilePath ( ) ;
430
+ var fbxMeshFilter = ExportComponent < MeshFilter > ( filename , gameObject ) ;
431
+ var fbxMesh = fbxMeshFilter . sharedMesh ;
432
+ CompareMeshComponentAttributes ( mesh , fbxMesh ) ;
433
+
434
+ // try exporting mesh without vertex colors
435
+ mesh . colors = new Color [ ] { } ;
436
+
437
+ filename = GetRandomFbxFilePath ( ) ;
438
+ fbxMeshFilter = ExportComponent < MeshFilter > ( filename , gameObject ) ;
439
+ fbxMesh = fbxMeshFilter . sharedMesh ;
440
+ CompareMeshComponentAttributes ( mesh , fbxMesh ) ;
441
+
442
+ Object . DestroyImmediate ( mesh ) ;
443
+ }
444
+
445
+ private void CompareMeshComponentAttributes ( Mesh mesh , Mesh fbxMesh )
446
+ {
447
+ Assert . IsNotNull ( fbxMesh ) ;
448
+ Assert . IsNotNull ( fbxMesh . vertices ) ;
449
+ Assert . IsNotNull ( fbxMesh . triangles ) ;
450
+ Assert . IsNotNull ( fbxMesh . normals ) ;
451
+ Assert . IsNotNull ( fbxMesh . colors ) ;
452
+ Assert . IsNotNull ( fbxMesh . tangents ) ;
453
+
454
+ Assert . AreEqual ( mesh . vertices , fbxMesh . vertices ) ;
455
+ Assert . AreEqual ( mesh . triangles , fbxMesh . triangles ) ;
456
+ Assert . AreEqual ( mesh . normals , fbxMesh . normals ) ;
457
+ Assert . AreEqual ( mesh . colors , fbxMesh . colors ) ;
458
+ Assert . AreEqual ( mesh . tangents , fbxMesh . tangents ) ;
410
459
}
411
460
}
412
461
}
0 commit comments