CustomPropertiesExportTest.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // ***********************************************************************
  2. // Copyright (c) 2017 Unity Technologies. All rights reserved.
  3. //
  4. // Licensed under the ##LICENSENAME##.
  5. // See LICENSE.md file in the project root for full license information.
  6. // ***********************************************************************
  7. using NUnit.Framework;
  8. using System.Collections;
  9. using Autodesk.Fbx;
  10. namespace Autodesk.Fbx.UseCaseTests
  11. {
  12. public class CustomPropertiesExportTest : HierarchyExportTest
  13. {
  14. protected string m_customPropName = "customProp";
  15. protected override FbxScene CreateScene (FbxManager manager)
  16. {
  17. FbxScene scene = base.CreateScene (manager);
  18. AddCustomProperties (scene.GetRootNode ().GetChild (0), m_customPropName, 1);
  19. return scene;
  20. }
  21. private void AddCustomProperties(FbxNode fbxNode, string propName, int propValue)
  22. {
  23. var fbxProperty = FbxProperty.Create(fbxNode, Globals.FbxIntDT, propName);
  24. Assert.IsTrue (fbxProperty.IsValid ());
  25. fbxProperty.Set (propValue);
  26. // Must be marked user-defined or it won't be shown in most DCCs
  27. fbxProperty.ModifyFlag(FbxPropertyFlags.EFlags.eUserDefined, true);
  28. fbxProperty.ModifyFlag(FbxPropertyFlags.EFlags.eAnimatable, true);
  29. for (int i = 0; i < fbxNode.GetChildCount (); i++) {
  30. AddCustomProperties (fbxNode.GetChild (i), propName, propValue + 1);
  31. }
  32. }
  33. protected override void CheckScene (FbxScene scene)
  34. {
  35. base.CheckScene (scene);
  36. FbxScene origScene = CreateScene (FbxManager);
  37. FbxNode origRoot = origScene.GetRootNode ().GetChild (0);
  38. FbxNode importRoot = scene.GetRootNode ().GetChild (0);
  39. CheckCustomProperties (origRoot, importRoot, m_customPropName);
  40. }
  41. private void CheckCustomProperties(FbxNode origNode, FbxNode importNode, string propName)
  42. {
  43. var origProperty = origNode.FindProperty (propName);
  44. var importProperty = importNode.FindProperty (propName);
  45. Assert.IsNotNull (origProperty);
  46. Assert.IsNotNull (importProperty);
  47. Assert.IsTrue (origProperty.IsValid ());
  48. Assert.IsTrue (importProperty.IsValid ());
  49. Assert.AreEqual(origProperty.GetInt(), importProperty.GetInt());
  50. Assert.AreEqual(origProperty.GetFlag(FbxPropertyFlags.EFlags.eUserDefined), importProperty.GetFlag(FbxPropertyFlags.EFlags.eUserDefined));
  51. Assert.AreEqual (origProperty.GetFlag (FbxPropertyFlags.EFlags.eAnimatable), importProperty.GetFlag (FbxPropertyFlags.EFlags.eAnimatable));
  52. Assert.AreEqual (origNode.GetChildCount (), importNode.GetChildCount ());
  53. for (int i = 0; i < origNode.GetChildCount (); i++) {
  54. CheckCustomProperties (origNode.GetChild (i), importNode.GetChild (i), propName);
  55. }
  56. }
  57. }
  58. }