ZibraLiquidAnalytics.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #if UNITY_EDITOR
  2. using System;
  3. using UnityEditor;
  4. using UnityEditor.Build;
  5. using UnityEditor.Build.Reporting;
  6. using UnityEngine;
  7. using UnityEngine.Networking;
  8. using com.zibra.common.SDFObjects;
  9. using com.zibra.liquid.Solver;
  10. using com.zibra.liquid.Bridge;
  11. using com.zibra.liquid.Manipulators;
  12. using com.zibra.common.Utilities;
  13. using com.zibra.common.Editor.SDFObjects;
  14. using com.zibra.common;
  15. namespace com.zibra.liquid.Analytics
  16. {
  17. [InitializeOnLoad]
  18. internal static class ZibraLiquidAnalytics
  19. {
  20. public static void TrackBakedStateSaved()
  21. {
  22. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_BakedStateSaved", true);
  23. }
  24. public static void TrackSimulationInitialization(ZibraLiquid liquid)
  25. {
  26. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_Used", true);
  27. if (liquid.InitialState == ZibraLiquid.InitialStateType.BakedLiquidState &&
  28. liquid.BakedInitialStateAsset != null)
  29. {
  30. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_BakedStateUsed", true);
  31. }
  32. var currentRendererMode = liquid.CurrentRenderingMode;
  33. switch (currentRendererMode)
  34. {
  35. case ZibraLiquid.RenderingMode.MeshRender:
  36. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_MeshRendererUsed", true);
  37. break;
  38. #if !ZIBRA_EFFECTS_OTP_VERSION
  39. case ZibraLiquid.RenderingMode.UnityRender:
  40. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_UnityRendererUsed", true);
  41. break;
  42. #endif
  43. }
  44. if (liquid.EnableDownscale)
  45. {
  46. EditorPrefs.SetBool("ZibraEffectsTracking_Liquids_RenderDownscaleUsed", true);
  47. }
  48. int currentNodeCount = liquid.GridNodeCount;
  49. int previousMaxNodeCount = EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MaxNodeCount", 0);
  50. int previousMinNodeCount = EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MinNodeCount", int.MaxValue);
  51. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MaxNodeCount",
  52. Math.Max(currentNodeCount, previousMaxNodeCount));
  53. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MinNodeCount",
  54. Math.Min(currentNodeCount, previousMinNodeCount));
  55. int currentMaxNumParticles = liquid.MaxNumParticles;
  56. int previousMaxMaxNumParticles = EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MaxMaxParticleCount", 0);
  57. int previousMinMaxNumParticles =
  58. EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MinMaxParticleCount", int.MaxValue);
  59. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MaxMaxParticleCount",
  60. Math.Max(currentMaxNumParticles, previousMaxMaxNumParticles));
  61. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MinMaxParticleCount",
  62. Math.Min(currentMaxNumParticles, previousMinMaxNumParticles));
  63. int currentGridResolution = liquid.GridResolution;
  64. int previousMaxGridResolution = EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MaxGridResolution", 0);
  65. int previousMinGridResolution =
  66. EditorPrefs.GetInt("ZibraEffectsTracking_Liquids_MinGridResolution", int.MaxValue);
  67. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MaxGridResolution",
  68. Math.Max(currentGridResolution, previousMaxGridResolution));
  69. EditorPrefs.SetInt("ZibraEffectsTracking_Liquids_MinGridResolution",
  70. Math.Min(currentGridResolution, previousMinGridResolution));
  71. foreach (var item in liquid.GetManipulatorList())
  72. {
  73. var manipulatorType = item.GetManipulatorType();
  74. var sdf = item.GetComponent<SDFObject>();
  75. if (sdf == null)
  76. continue;
  77. switch (manipulatorType)
  78. {
  79. case Manipulator.ManipulatorType.Emitter:
  80. case Manipulator.ManipulatorType.Void:
  81. case Manipulator.ManipulatorType.ForceField:
  82. case Manipulator.ManipulatorType.Detector:
  83. case Manipulator.ManipulatorType.SpeciesModifier:
  84. TrackManipulatorSDF(sdf, manipulatorType.ToString());
  85. break;
  86. }
  87. }
  88. foreach (var item in liquid.GetColliderList())
  89. {
  90. var sdf = item.GetComponent<SDFObject>();
  91. if (sdf == null)
  92. continue;
  93. TrackManipulatorSDF(sdf, "Collider");
  94. }
  95. }
  96. private static void TrackManipulatorSDF(SDFObject sdf, string manipulatorType)
  97. {
  98. if (sdf is AnalyticSDF)
  99. {
  100. EditorPrefs.SetBool($"ZibraEffectsTracking_Liquids_Manipulator{manipulatorType}AnalyticSDF", true);
  101. }
  102. else if (sdf is NeuralSDF)
  103. {
  104. EditorPrefs.SetBool($"ZibraEffectsTracking_Liquids_Manipulator{manipulatorType}NeuralSDF", true);
  105. }
  106. else if (sdf is SkinnedMeshSDF)
  107. {
  108. EditorPrefs.SetBool($"ZibraEffectsTracking_Liquids_Manipulator{manipulatorType}SkinnedMeshSDF", true);
  109. }
  110. }
  111. }
  112. }
  113. #endif