LocalizeTarget_UnityStandard_MeshRenderer.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using UnityEditor;
  2. using UnityEngine;
  3. #pragma warning disable 618
  4. namespace I2.Loc
  5. {
  6. #if UNITY_EDITOR
  7. [InitializeOnLoad]
  8. #endif
  9. public class LocalizeTarget_UnityStandard_MeshRenderer : LocalizeTarget<MeshRenderer>
  10. {
  11. static LocalizeTarget_UnityStandard_MeshRenderer() { AutoRegister(); }
  12. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void AutoRegister() { LocalizationManager.RegisterTarget(new LocalizeTargetDesc_Type<MeshRenderer, LocalizeTarget_UnityStandard_MeshRenderer> { Name = "MeshRenderer", Priority = 800 }); }
  13. public override eTermType GetPrimaryTermType(Localize cmp) { return eTermType.Mesh; }
  14. public override eTermType GetSecondaryTermType(Localize cmp) { return eTermType.Material; }
  15. public override bool CanUseSecondaryTerm() { return true; }
  16. public override bool AllowMainTermToBeRTL() { return false; }
  17. public override bool AllowSecondTermToBeRTL() { return false; }
  18. public override void GetFinalTerms ( Localize cmp, string Main, string Secondary, out string primaryTerm, out string secondaryTerm)
  19. {
  20. if (mTarget==null)
  21. {
  22. primaryTerm = secondaryTerm = null;
  23. }
  24. else
  25. {
  26. MeshFilter filter = mTarget.GetComponent<MeshFilter>();
  27. if (filter==null || filter.sharedMesh==null)
  28. {
  29. primaryTerm = null;
  30. }
  31. else
  32. {
  33. #if UNITY_EDITOR
  34. primaryTerm = AssetDatabase.GetAssetPath(filter.sharedMesh);
  35. I2Utils.RemoveResourcesPath(ref primaryTerm);
  36. #else
  37. primaryTerm = filter.sharedMesh.name;
  38. #endif
  39. }
  40. }
  41. if (mTarget==null || mTarget.sharedMaterial==null)
  42. {
  43. secondaryTerm = null;
  44. }
  45. else
  46. {
  47. #if UNITY_EDITOR
  48. secondaryTerm = AssetDatabase.GetAssetPath(mTarget.sharedMaterial);
  49. I2Utils.RemoveResourcesPath(ref secondaryTerm);
  50. #else
  51. secondaryTerm = mTarget.sharedMaterial.name;
  52. #endif
  53. }
  54. }
  55. public override void DoLocalize(Localize cmp, string mainTranslation, string secondaryTranslation)
  56. {
  57. //--[ Localize Material]----------
  58. Material newMat = cmp.GetSecondaryTranslatedObj<Material>(ref mainTranslation, ref secondaryTranslation);
  59. if (newMat != null && mTarget.sharedMaterial != newMat)
  60. {
  61. mTarget.material = newMat;
  62. }
  63. //--[ Localize Mesh ]----------
  64. Mesh newMesh = cmp.FindTranslatedObject<Mesh>( mainTranslation);
  65. MeshFilter filter = mTarget.GetComponent<MeshFilter>();
  66. if (newMesh != null && filter.sharedMesh != newMesh)
  67. {
  68. filter.mesh = newMesh;
  69. }
  70. }
  71. }
  72. }